如果我能编写一个T-SQL查询来检查其他表中是否存在行并将数据插入临时表中,我想请求帮助。
例如,我有5个表main1
,table2
,table3
,table4
和table5
。每个表都有一个product_id
列。
我需要main1.product_id
(值A000到A010)来检查它们是否存在于table2
,table3
,table4
和table5
中。
如果在table2
中找到,则值“A000”将插入临时表中。如果找不到,则会检入table3
;如果没有找到,它将检入table4
。
然后将检查main1.product_id
值“A001”。如果在table2
中找到A001,则不再在table3
和table4
中进行检查,它将被写入临时表,并且要从{{1}检查下一个值} table,等等......
非常感谢
答案 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 )