我想在表table1中检查sno = 5的记录数。
我需要的只是一个布尔值true或false。
怎么做?
我能做到
select count(*) from table1 where sno = 5
然后检查返回值是否等于5。
我想要这样的事情:
select 1 (else 0) where (select count(*) from table1 ) = 5;
感谢您的帮助。
答案 0 :(得分:1)
尝试:
SELECT CASE COUNT(id)
WHEN 5 THEN "true"
ELSE "false"
END
AS cn_val
FROM table where sno = 5
答案 1 :(得分:1)
您想检查表格中是否有5条符合条件sno = 5
的记录?您可以使用以下语句执行此操作:
select (select count(*) from table1 WHERE sno = 5) = 5
但我不打扰这种包装。只需运行此SQL:
select count(*) from table1 WHERE sno = 5
然后检查代码中的结果是否等于5。
您的问题很混乱,因为值5用于两个地方:您要匹配的sno列的值,以及您要查找的匹配记录的数量。
答案 2 :(得分:1)
使用GROUP BY...HAVING
查询。
SELECT sno, COUNT(sno) AS sno_count
FROM table1
GROUP BY sno
HAVING COUNT(sno) = 5
AND sno = 5
通过省略最后的AND sno = 5
,您可以获得sno
的所有具有5条记录的值。
答案 3 :(得分:1)
select IF(count(*)=5, 1, 0) as has_5_items from table1 where sno = 5;