2010-08-12 84 views
1

我想一个SELECT查询返回的特定值,如果一个嵌套子查询的次数为0 ...SQL子查询COUNT CASE

SELECT 
    (SELECT (CASE COUNT(*) = 0 THEN 'TRUE' ELSE 'FALSE' END) 
    FROM List 
    WHERE Status = 1 
     AND Deleted = 1 
) AS Status 

这不起作用,什么是错的这个语法?

回答

8

我相信你想有一个case语句看起来像这样:

CASE 
WHEN EXISTS(SELECT * FROM list WHERE Status = 1 AND Deleted = 1) THEN 'FALSE' 
ELSE 'TRUE' 
END 
1

您的查询缺少在CASE语句的WHEN关键字。

SELECT 
    (SELECT (CASE WHEN COUNT(*) = 0 THEN 'TRUE' ELSE 'FALSE' END) 
    FROM List 
    WHERE Status = 1 
     AND Deleted = 1 
) AS Status 

您可以用走,或者您可以通过删除外部SELECT语句简化查询。而且,括号也是可选的。

SELECT CASE WHEN COUNT(*) = 0 THEN 'TRUE' ELSE 'FALSE' END 
FROM List 
WHERE Status = 1 
    AND Deleted = 1