1
2
计数不是一个总和。。您的第一个查询不正确,因为不返回正确的行数。。但不为空的行的总数是真是假 如果需要筛选计数,则必须使用where条件(作为第二个查询),否则必须在sum()函数中使用if或select大小写,例如:
或者如果你想数数。。使用空而不是0分钟计数
|
2
4
如果要查看发生了什么,请运行查询:
您将看到people中的每一行都会得到一个结果,值为0或1(或True/False)。您选择的是每一行是否state='CA',这些结果的数量将与行的数量一样多。 不能在语句中约束COUNT语句,必须通过WHERE子句来实现,如第二个示例所示。 |
3
1
试试这个-:
|
4
1
如果您使用
|
5
1
在第一个查询中,它将值“CA”分配给所有1000行的列状态,而不是筛选值。那就是
鉴于
有一个运行查询的序列。它开始于
|
6
1
回答实际的问题-为什么你得到1000?我猜您的数据库中有1000行,或者至少有1000行state不为空。Count将返回()中的内容不为空的行数,正如您的一条评论所说,()中的部分将返回true或false,两者都不为空,因此将对它们全部进行计数。你的第二个例子当然是正确的方法。 |
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |