什么算(谓词)在MySQL中做什么?

时间:2013-10-17 20:35:46

标签: mysql

我很惊讶地看到我的一个学生写作

select count(title='Staff') from titles

针对MySQL员工数据库。这是否是

的一个很好的捷径
select sum(case when title='Staff' then 1 else 0 end) from titles

它在MySQL 5.6中无效(返回完整的表计数)?

2 个答案:

答案 0 :(得分:4)

不,这个count不是您撰写的sum的简写。

COUNT(exp)计算非空exp 的行数。 title='Staff'是一个布尔表达式,如果title为'Staff',则计算结果为true;如果是其他任何值,则计算为false;如果为null,则为null

因此,此查询等同于

select count(title) from titles

反过来相当于

select count(*) from titles where title is not null

答案 1 :(得分:1)

! 你不能把条件写入括号中。它简单地返回该表中的所有行。

select count(title='Staff') from titlestitles

返回所有行