如果所有结果均相等,则返回true

时间:2020-11-09 15:45:40

标签: mysql sql aggregate-functions

我有一个简单的选择,它返回一个列:

结果:{1,1,2}

我想检查所有结果是否均为1,然后返回true,如果一列中有2,则返回false。

尝试过类似的事情:

SELECT IF(items.status=1, 'true', 'false') AS result
FROM bd.items 
WHERE items.id=33

但是显然,如果值为1,则返回true;如果值为2,则返回false,而不只是一个结果。

例如:

{1,1,1} = true

{1,2,1} = false

{1} = true

{2} = false

3 个答案:

答案 0 :(得分:2)

这是您想要的吗?

select min(status = 1) as result
from bd.items
where id = 33

当且仅当所有行都有1 status时,此方法返回1。如果该列中还有其他值(非null),则返回0

如果一次要所有商品都使用该商品:

select id, min(status = 1) as result
from bd.items
group by id

答案 1 :(得分:0)

请尝试以下查询:

select 
case 
when (max(items.status)=min(items.status) and min(items.status)=1) 
then 'True' else 'False' end
from items
where items.id=33
group by id

答案 2 :(得分:0)

您可以使用下一种方法:

select 
    id, count(status) = count(case when status=1 then 1 end) status
from items
group by id
;

当统计所有行等于状态为1的行时,查询返回true

这和其他几个查询here