根据另一个表中的条件插入sql语句

时间:2019-01-06 12:35:30

标签: mysql sql

我试图根据另一个表中的条件将值插入表中。理想情况下,我想要这样的东西:

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,因此不确定如何执行此操作。

3 个答案:

答案 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