SQL Server:如何检查其他表中是否存在行

时间:2015-08-09 04:12:00

标签: sql-server

如果我能编写一个T-SQL查询来检查其他表中是否存在行并将数据插入临时表中,我想请求帮助。

例如,我有5个表main1table2table3table4table5。每个表都有一个product_id列。

我需要main1.product_id(值A000到A010)来检查它们是否存在于table2table3table4table5中。

如果在table2中找到,则值“A000”将插入临时表中。如果找不到,则会检入table3;如果没有找到,它将检入table4

然后将检查main1.product_id值“A001”。如果在table2中找到A001,则不再在table3table4中进行检查,它将被写入临时表,并且要从{{1}检查下一个值} table,等等......

非常感谢

2 个答案:

答案 0 :(得分:0)

看起来你正在寻找这样的东西:

insert into #tmp
select product_id
from main1 m
where
(
  exists (select 1 from table2 t where t.product_id = m.product_id) 
  or exists (select 1 from table3 t where t.product_id = m.product_id)
  or exists (select 1 from table4 t where t.product_id = m.product_id)
  or exists (select 1 from table5 t where t.product_id = m.product_id)
)

这将检查每个表,如果找到该行,则将其插入#tmp

答案 1 :(得分:0)

或者,您也可以像

中一样使用UNION ALL
Insert into #tmp
Select product_id from main1 where exists
(select 1 from (
  select product_id p from table2 union all
  select product_id from table3 union all
  select product_id from table4 union all
  select product_id from table5 
  ) all where p=product_id )