我有两个表,它们具有相同的列id
,但table1
的{{1}}比id
多table2
。现在,我想在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
答案 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.id
且table2
子句中也没有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;