【发布时间】:2011-03-04 12:29:21
【问题描述】:
如果存在,我需要返回行,如果不返回,则返回哪个传递的值不存在:
DECLARE @INPUT1 BIGINT
DECLARE @INPUT2 BIGINT
DECLARE @INPUT3 BIGINT
SELECT e.Name, d.Name, c.Name
FROM Employee e
JOIN Department d ON e.DeptID = d.DeptID
JOIN City c ON e.CityID = c.CityID
WHERE
e.EmpID = @INPUT1
AND d.DeptID = @INPUT2
AND c.CityID = @INPUT3
上述SQL中,所有输入INPUT1、INPUT2、INPUT3都正确传入,返回行。如果不是,我需要找出哪个 INPUTx 是错误的。我知道我可以编写 3 个不同的 Exists 查询来找出哪个不存在。有更好的方法吗?提前致谢。
【问题讨论】:
-
我看不出你怎么能确定哪一个是错的。如果他们传入一个有效的员工、一个有效的部门和一个有效的城市怎么办,但它们并不是一起有效。你怎么知道哪一个(或多个)是“不正确的”?
-
我假设 OP 意味着这 3 个值中的 1 个或多个不存在。 Wrong 可能不是描述它的正确方式:也许 not found 会更好。
-
MJB -- 根据您的评论编辑(不存在)
-
感谢 Eric Petroelije -- 同意。但就我而言,我只想知道它是否不存在。 All are not valid 在我的真实场景中不起作用。
标签: sql sql-server performance tsql