首页 >

mysql总记录数不变统计重复 |linux mysql 5.6.14

rand函数mysql,mysql怎么设置时间,mysql如何建立适当索引,centos配置mysql5.7,luca和mysql关系,linux mysql 5.6.14mysql总记录数不变统计重复 |linux mysql 5.6.14
SELECT COUNT(*) FROM table_name;

上面这条语句会返回table_name表中所有记录的数量。

然而,当大家需要统计某个表中某个字段的不重复数量时,上面这条SQL语句就无法满足大家的需求了。比如大家要统计某个表中名字不重复的人数,大家可以这么写:

SELECT COUNT(DISTINCT name) FROM table_name;

上面这条语句会返回table_name表中所有不重复的名字的数量。

那么如何同时获取表中总记录数和某个字段不重复数量呢?大家可以这样写:

SELECT COUNT(*) AS total_count, COUNT(DISTINCT name) AS name_count FROM table_name;

上面这条语句会返回一个结果集,其中total_count列代表table_name表中所有记录的数量,name_count列代表table_name表中所有不重复的名字的数量。

需要注意的是,如果表中有重复的行,上面的语句会重复统计这些行,导致总记录数不变。比如:

+----+--------+
| id |  name  |
+----+--------+
| 1  | Alice  |
| 2  | Alice  |
| 3  | Bob    |
+----+--------+

如果大家执行以下SQL语句:

SELECT COUNT(*) AS total_count, COUNT(DISTINCT name) AS name_count FROM table_name;

将会得到以下结果:

+-------------+------------+
| total_count | name_count |
+-------------+------------+
|     3       |      2     |
+-------------+------------+

大家发现,虽然表中有3条记录,但是total_count列只统计了2条记录,因为表中有重复的数据。

为了避免这种情况,大家可以使用下面这条SQL语句:

SELECT COUNT(DISTINCT id) AS total_count, COUNT(DISTINCT name) AS name_count FROM table_name;

上面这条语句会返回一个结果集,其中total_count列代表table_name表中所有不重复的记录的数量,name_count列代表table_name表中所有不重复的名字的数量。

如果大家执行以下SQL语句:

SELECT COUNT(DISTINCT id) AS total_count, COUNT(DISTINCT name) AS name_count FROM table_name;

将会得到以下结果:

+-------------+------------+
| total_count | name_count |
+-------------+------------+
|     2       |      2     |
+-------------+------------+

大家发现,total_count列也统计了2条记录,并避免了重复统计的问题。


mysql总记录数不变统计重复 |linux mysql 5.6.14
  • mysql更新表的几列到几列 |mysql 以时间取表
  • mysql更新表的几列到几列 |mysql 以时间取表 | mysql更新表的几列到几列 |mysql 以时间取表 ...

    mysql总记录数不变统计重复 |linux mysql 5.6.14
  • mysql如何实现水平分表取数据库? |mysql导入json
  • mysql如何实现水平分表取数据库? |mysql导入json | mysql如何实现水平分表取数据库? |mysql导入json ...

    mysql总记录数不变统计重复 |linux mysql 5.6.14
  • mysql数据库存图片url(图片管理的高效方法) |mysqli使用教程
  • mysql数据库存图片url(图片管理的高效方法) |mysqli使用教程 | mysql数据库存图片url(图片管理的高效方法) |mysqli使用教程 ...