sql - SQL Server 中嵌套查询有结果或没有结果时如何返回 Yes 或 No?

标签 sql sql-server stored-procedures subquery

我有一个带有嵌套查询的存储过程,用于检查主表中的“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/

相关文章:

sql-server - VS 2015 MSBuild 部署数据库项目错误

mysql - 存储过程还是 View ?

mysql - 声明变量时 MySQL 存储过程中的语法错误

mysql - SQL 查询更新一系列字段 - MySQL 表

mysql: 值可以是 "null",但不一定是 "specific_value"

java - 在表中保留最新的 n 个条目

sql-server - 在 MS SQL 触发器中处理多条记录

java - 如何为 sql server 配置 hibernate 配置文件

mysql - 过程语法错误

sql - UNION 与 CROSS APPLY 性能