我有一个简单的选择,它返回一个列:
结果:{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
答案 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