需要帮助构建mysql查询

时间:2012-01-10 10:23:07

标签: mysql

我想在表table1中检查sno = 5的记录数。

我需要的只是一个布尔值true或false。

怎么做?

我能做到

select count(*) from table1 where sno = 5

然后检查返回值是否等于5。

我想要这样的事情:

select 1 (else 0) where (select count(*) from table1 ) = 5;

感谢您的帮助。

4 个答案:

答案 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;