假设我们有一个带有主键列ID的表A.现在,这个表与该列中的其他表格处于外键关系中。
我需要创建一个存储过程,它将ID作为参数并返回1或0,具体取决于任何其他表中存在的ID值。
因此对于ex,如果ID = 3并且n个表中的任何一个包含3,则SP应该返回1,否则为0.
实现这一目标的最佳方法是什么?
一种方法是运行n个不同的选择查询并处理每个结果。但看起来很笨拙。
感谢。
答案 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
一种与约翰相似的方法。我确信可以使用系统表,使用那里找到的关系来做到这一点,但这需要付出很多努力。这些表会改变到足以让它值得吗?