SQL SELECT DISTINCT 语句
SQL SELECT DISTINCT 语句
什么是SELECT DISTINCT?
SELECT DISTINCT 是 SQL 中的一个关键字,用于去除 SELECT 查询语句中重复的结果行。DISTINCT 仅对 SELECT 语句中选定的列去重,不会对所有列去重,如:SELECT DISTINCT * FROM table; 是无效的。
SELECT DISTINCT 语法
SELECT DISTINCT column1, column2, ...
FROM table_name;
column1, column2, ...
表示需要去重的列。table_name
表示需要查询数据的表名。
在实际使用中,也可以使用别名来代替列名,如:SELECT DISTINCT column1 AS c1, column2 AS c2 FROM table_name。
SELECT DISTINCT 例子
考虑以下数据表 customers。
+----+-------+----------+---------------------+
| id | name | email | created |
+----+-------+----------+---------------------+
| 1 | Jack | jack@xx.com | 2021-01-01 12:00:00 |
| 2 | Tom | tom@xx.com | 2021-02-01 08:00:00 |
| 3 | Jerry | jerry@xx.com| 2021-02-01 14:00:00 |
| 4 | Jack | jack@xx.com | 2021-03-01 10:00:00 |
+----+-------+----------+---------------------+
我们想要查询所有不重复的用户姓名,可以使用以下 SQL 代码:
SELECT DISTINCT name FROM customers;
输出结果为:
+-------+
| name |
+-------+
| Jack |
| Tom |
| Jerry |
+-------+
SELECT DISTINCT 和 GROUP BY 的区别
在 SQL 中实现去重可以使用 SELECT DISTINCT 和 GROUP BY 语句,这里简要介绍两者的区别。
- SELECT DISTINCT 只能去除整行重复的结果数据,而 GROUP BY 则可以分组聚合,并对聚合结果去重。
- GROUP BY 支持聚合函数,比如 SUM,AVG,COUNT 等函数可以对聚合分组的结果进行统计计算。
举个例子:我们想要统计所有用户的数量和不重复用户的数量,代码可能如下:
SELECT COUNT(*) AS total_count, COUNT(DISTINCT name) AS distinct_count FROM customers;
总结
SELECT DISTINCT 和 GROUP BY 都支持对查询结果去重,前者只去除整行重复,后者支持分组聚合功能。在实际使用中应根据需要选择其中一种方法,或混合两种方法进行使用。