检查多个表中的特定ID或值

时间:2010-07-19 10:05:03

标签: sql-server

假设我们有一个带有主键列ID的表A.现在,这个表与该列中的其他表格处于外键关系中。

我需要创建一个存储过程,它将ID作为参数并返回1或0,具体取决于任何其他表中存在的ID值。

因此对于ex,如果ID = 3并且n个表中的任何一个包含3,则SP应该返回1,否则为0.

实现这一目标的最佳方法是什么?

一种方法是运行n个不同的选择查询并处理每个结果。但看起来很笨拙。

感谢。

2 个答案:

答案 0 :(得分:1)

你可以做这样的事情

select case when (isnull (b.id, 0)) = 0 then case when isnull (c.id, 0) = 0 then 0 else 1 end else 1 end
from a  
left outer join b on a.id = b.id 
left outer join c on a.id = c.id 

只需添加一个连接等

答案 1 :(得分:1)

IF EXISTS
(
    SELECT * 
    FROM 
        A
        INNER JOIN B ON A.Id = B.Id
        INNER JOIN C ON A.Id = C.Id
        INNER JOIN D ON A.Id = D.Id
)
BEGIN
    SELECT 1
END
ELSE
BEGIN
    SELECT 0
END 

一种与约翰相似的方法。我确信可以使用系统表,使用那里找到的关系来做到这一点,但这需要付出很多努力。这些表会改变到足以让它值得吗?