例如,我想要将数字2作为目标
这应该返回正面指示:
ID Status
123 2
432 2
531 2
123 2
这应该返回负面指示:
ID Status
123 1
432 3
531 2
123 2
这应该返回负面指示:
ID Status
123 1
432 1
531 1
123 1
由于
答案 0 :(得分:14)
EXISTS
应优先于COUNT
使用,以便在找到第一个非匹配行后立即返回。
SELECT CASE
WHEN NOT EXISTS(SELECT *
FROM your_table
WHERE status <> 2) THEN 'Y'
ELSE 'N'
END AS your_result
您没有声明RDBMS。您可能需要将FROM DUAL
附加到上面依赖于味道的末尾。
答案 1 :(得分:3)
select (select count(distinct status) from T) = 1
将返回1或0(即true或false),具体取决于所有行是否在Status中具有相同的值。如果必须处理状态中的NULL值:
select exists
( select status from T where status <> 2 or status is null)
as StatusContainsOtherThanTwoOrNullValue
答案 2 :(得分:1)
select count(*) where Status != 2