我有一个查询这是一个有点像这样:返回一个值,即使在一个子查询,其中返回空集
SELECT ISNULL(MyColumn, "Not Applicable") As MyColumn
FROM MyTable
WHERE SomeOtherColumn =
(SELECT AValue
FROM SomeOtherTable
WHERE SomeConditionHolds
)
如果MyColumn相关值具有的价值,我得到这个,如果它为空,则会根据需要给出“不适用”。
但是,偶尔子查询返回空集,在这种情况下,整个查询也返回空集。我仍然希望它返回“不适用”。
我已经能够做的最好的是添加到上面
UNION
SELECT 'Not Applicable' AS MyColumn
WHERE NOT EXISTS
(SELECT AValue
FROM SomeOtherTable
WHERE SomeConditionHolds
)
但这种感觉真的哈克和低效。我希望有人有一个更好的主意。
您可以运行先用结果去到一个临时表或表变量选择,然后检查'@@ RowCount'。如果它为零,则返回N/A行,否则返回临时结果。 – HABO 2013-05-10 19:23:04
这一直停滞不前,上面的问题只是一个更大问题的一个步骤,我发现了一个完全不同的解决方案。然而,在这个过程中,我确实尝试了回答中提到的两种类型的连接,并且当子查询部分返回空集时,它们仍然返回emtpy集合。所以我不觉得我可以接受任何答案。感谢您的尝试。 – cobaltduck 2013-05-18 18:59:19