2009-08-30 83 views

回答

16

正确。 COUNT(*)是表中的所有行,COUNT(表达式)是表达式仅为非null的地方。

如果所有列均为NULL(表示您没有主键,所以这不应发生在规范化数据库中)COUNT(*)仍然返回插入的所有行。只是不要那样做。

你可以认为“在任何一列”“表” *符号的含义,而不是的。

+0

有什么办法来算空太,与COUNT(表达式)? – 2014-04-04 11:02:05

+0

如果您执行COUNT(*),则无论这些行的内容如何,​​都会对所有行进行计数。如果您想要查看具有SomeColumn值的行的总计行数和行数,请执行SELECT COUNT(*)AllRows,COUNT(SomeColumn)为SomeColumnCount。 AllRows将是查询返回的总行数,而SomeColumnCount将是SomeColumn具有值的行数。 – Godeke 2014-04-08 04:57:48

2

count(*)不是非空列,它只是要求计算所有行的方式。大致相当于count(1)

4

只是检查:

SELECT COUNT(*)

返回-1,用空值填充

SELECT COUNT(场)

返回0

我不要一个记录没有看到空值记录中的点。这样的记录一定不存在。

+0

“我没有看到空值记录中的点”。哦,它刚刚出现在我的脑海里。现在当你说这个我想你是对的时候,当我问的时候,没有想到这件事。 – iceangel89 2009-08-31 14:16:58

12

如果你要计算的NULL为好,尽量

SELECT COUNT(IFNULL(col, 1)) FROM table; 
+0

大@Roey – 2016-10-13 10:17:21