簡體   English   中英

嘗試根據其他表中的條件獨立插入時,WHERE NOT EXISTS不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM