我应使用 COUNT(*) 来获得 MySQL 中的所有记录吗?


当需要获得一个类似列 non null 的所有值时 ,使用 count(*)。这比使用 count() 方法要快。

使用 count(*) 的语法如下 -

select count(*) as anyVariableName from yourTableName;

为了理解上述概念,我们首先创建一个表格。创建表格的查询如下 -

mysql> create table CountingDemo
   -> (
   -> BookId int
   -> );
Query OK, 0 rows affected (0.60 sec)

使用 insert 命令向表格中插入一些记录。查询如下 -

mysql> insert into CountingDemo values(100);
Query OK, 1 row affected (0.13 sec)

mysql> insert into CountingDemo values();
Query OK, 1 row affected (0.17 sec)

mysql> insert into CountingDemo values(200);
Query OK, 1 row affected (0.12 sec)

mysql> insert into CountingDemo values(300);
Query OK, 1 row affected (0.16 sec)

mysql> insert into CountingDemo values();
Query OK, 1 row affected (0.12 sec)

使用 select 语句显示表格中的所有记录。查询如下 -

mysql> select *from CountingDemo;

输出

+--------+
| BookId |
+--------+
|    100 |
|   NULL |
|    200 |
|    300 |
|   NULL |
+--------+
5 rows in set (0.00 sec)

假设你的列没有 null 值,那么 count(*) 和 count() 会得到相同的结果。

但在我们的示例中,BookId 列有一些 null 值。在这种情况下,count(*) 和 count() 会得到不同的结果。

这里使用 count(*) 的查询 -

mysql> select count(*) as AllValue from CountingDemo;

输出

+----------+
| AllValue |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)

这里使用 count() 的查询,它不会将 null 值算在内,因此会得到另一个结果。查询如下 -

mysql> select count(BookId) as AllvalueWhichisNotnull from CountingDemo;

输出

+------------------------+
| AllvalueWhichisNotnull |
+------------------------+
|                      3 |
+------------------------+
1 row in set (0.00 sec)

更新于: 2019-07-30

114 次浏览

开启你的 职业生涯

完成课程获得认证

开始学习
广告