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

pqwbnv8z  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(434)

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

INSERT INTO table_a SET user_id = 'contactId'
WHERE
    table_b.user_id = 'userA' 
    AND table_b.contact_id = 'contactId' 
    AND user_blocked = false

因此,在创建新的表\u a条目之前,我要确保没有通过检查表\u b来阻止用户。
我知道我不能用where用户插入,所以不知道如何才能做到这一点。

wxclj1h5

wxclj1h51#

您可以为此使用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
pkln4tw6

pkln4tw62#

您可以使用“从选择插入”。例如,此链接将帮助您。

llew8vvj

llew8vvj3#

好像你在找一个 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 不会发生的。

相关问题