我正在尝试使用存储过程验证SQL Server表中存在的数据。 在其中一个验证规则中,我必须检查特定列的值是否存在于另一个表中。
假设我有一个临时表,其中包含以下列Cat_ID,Amount,SRC_CDE
我有一个'维护',其中包含以下列CatID,Cat_Name
我必须验证登台表中的Cat_ID是否存在于每行的“维护”中
我使用以下语句来验证
if((Select count(*) from maintable where CatID= @Cat_id) >0 )
-- Do something if data present
我想知道除了对每一行使用select查询之外是否有更好的方法来执行上述操作。
我可以使用某种类型的数组,我可以从维护和检查中获取所有CatID,而不是使用选择查询。
谢谢
答案 0 :(得分:1)
使用left join
列出所有无效行。
select
staging.*
from
staging
left join maintable
on staging.catid=maintable.catid
where maintable.catid is null