我试图根据另一个表中的条件将值插入表中。理想情况下,我想要这样的东西:
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,因此不确定如何执行此操作。
答案 0 :(得分:4)
好像您正在寻找INSERT ... SELECT
query一样:
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
将不会发生。
答案 1 :(得分:0)
您可以使用“从选择插入”。例如,this链接将为您提供帮助。
答案 2 :(得分:0)
您可以为此使用T-SQL,或构建存储过程。
首先检查user_id
中是否阻止table_b
,如果答案是否定的,则将值插入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