我有一个带有嵌套查询的存储过程,用于检查主表中的“category
”是否与子表中的“category
”匹配。
因此,要么只有一场比赛,要么没有一场比赛。
如果有匹配且子查询返回某些内容,如何返回 Yes;如果没有匹配且子查询不返回任何内容,如何返回 No?
我尝试了以下方法,该方法通常有效,但仅当存在匹配时才有效,否则不会返回任何内容。
My SQL(缩写):
SELECT A.categoryID,
A.category,
A.[description],
(
SELECT 'Yes' AS subscribed
FROM MOC_Categories_Subscribers D
WHERE D.category = A.category
FOR XML PATH(''), ELEMENTS, TYPE
)
FROM MOC_Categories A
最佳答案
如果子查询不返回任何行,那么结果将为 NULL。因此你需要检查它。在 SQL Server 中,您可以使用函数 ISNULL
来完成此操作和 COALESCE
,这取决于您使用的版本
SELECT A.categoryID,
A.category,
A.[description],
COALESCE((SELECT TOP 1 'Yes'
FROM MOC_Categories_Subscribers D
WHERE D.category = A.category), 'No') AS Result
FROM MOC_Categories A
关于sql - SQL Server 中嵌套查询有结果或没有结果时如何返回 Yes 或 No?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25662447/