SQL:当另一个表中不存在一个值时插入到表中?

时间:2014-03-22 12:19:01

标签: mysql sql if-statement mysqli

我有两个表,它们具有相同的列id,但table1的{​​{1}}比idtable2。现在,我想在id中找到table1 a但在table2中不存在,insert将其存入table2,并将其count值设置为0

我尝试了以下代码,但它说syntax error, unexpected IF。任何人都可以帮我搞清楚吗?非常感谢。

if not exists(select * from table1 where table1.id = table2.id)
begin
    insert into table2 (id, count) values (table1.id, 0)
end

3 个答案:

答案 0 :(得分:5)

您可以使用一个insert . . . select语句执行此操作:

insert into table2(id, count)
    select id, 0
    from table1 t1
    where not exists (select 1 from table2 t2 where t2.id = t1.id);

如果您在if上收到错误,我猜您正在使用MySQL(if仅允许在过程/函数/触发器代码中使用)。但即使if允许,exists中的查询引用table2.idtable2子句中也没有from。这将是下一个错误。

答案 1 :(得分:0)

试试这个:

INSERT INTO table2 (id,count)
SELECT id,0 from table1 where id NOT IN (select id from table2)

答案 2 :(得分:0)

LEFT JOIN也可以在这里使用

insert into table2(id, count)
select t1.id, 0
from table1 t1 left join table2 t2
on t1.id = t2.id
where t2.id is null;