[英]WHERE NOT EXISTS not working when trying to insert based independent on condition from another table
我試圖根據另一個表中的條件將值插入表中。 不是基於忽略重復值。 但是我一直收到語法錯誤。 不知道如何進行。
我要實現的是,如果在獨立表中該用戶沒有阻止當前用戶,則僅允許將用戶添加到組中:
INSERT INTO users_to_groups(user_id, group_id)
VALUES (1,'A')
WHERE NOT EXISTS (SELECT * FROM users_to_users WHERE user_id_a=2 AND user_id_b=1 AND user_blocked=1);
編輯
我正在嘗試一次插入多行
你可以做:
INSERT INTO users_to_groups(user_id, group_id)
SELECT x.user_id, x.group_id
FROM (SELECT 1 as user_id, 'A' as group_id) x
WHERE NOT EXISTS (SELECT 1
FROM users_to_users utu
WHERE utu.user_id_a = 2 AND
utu.user_id_b = 1 AND
utu.user_blocked = 1
);
如果您只想INSERT
一行,可以嘗試如下操作:
INSERT INTO users_to_groups(user_id, group_id)
SELECT 1,'A'
FROM dual
WHERE NOT EXISTS
(SELECT * FROM users_to_users
WHERE user_id_a=2 AND user_id_b=1 AND
user_blocked=1);
如果您想INSERT
真實的查詢結果,則可以使用邏輯更改SELECT
語句
例如:
INSERT INTO users_to_groups(user_id, group_id)
SELECT u.id,'A'
FROM users u
WHERE NOT EXISTS
(SELECT * FROM users_to_users
WHERE user_id_a=u.id AND user_id_b=1 AND
user_blocked=1);
但是您不能在WHERE
條件下使用INSERT INTO ... VALUES
,因為您存在語法錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.