[英]INSERT sql statement based on condition from another table
我正在嘗試根據另一個表中的條件將值插入到一個表中。 理想情況下,我想要這樣的東西:
INSERT INTO table_a SET user_id = 'contactId'
WHERE
table_b.user_id = 'userA'
AND table_b.contact_id = 'contactId'
AND user_blocked = false
所以在創建新的 table_a 條目之前,我想通過檢查 table_b 來確保用戶沒有被阻止。
我知道我不能在 WHERE 中使用 INSERT,所以不知道如何做到這一點。
似乎您正在尋找INSERT ... SELECT
查詢:
INSERT INTO table_a (user_id)
SELECT 'contactId'
FROM table_b AS tb
WHERE
tb.user_id = 'userA'
AND tb.contact_id = 'contactId'
AND tb.user_blocked = false
如果子查詢不返回任何內容,則外部INSERT
不會發生。
您可以使用“從選擇插入”。 例如,此鏈接將幫助您。
您可以為此使用 T-SQL,或構建一個存儲過程。
首先檢查user_id
是否在table_b
被阻塞,如果答案為 false,則將值插入table_a
這是一個例子:
DECLARE @user_id INT = 1234
IF ((SELECT user_blocked FROM table_b b WHERE b.USER_id = @user_id) = 'false')
BEGIN
INSERT INTO table_a
VALUES(@user_id,....)
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.