首页 > MySQL > SQL 入门教程 > 09 SQL Distinct

SQL Distinct

1. 定义

维基百科:关键字Distinct用于返回唯一不同的值。

慕课解释:有时候,查询结果中会包含重复的信息,如年龄,很多人是同龄人,而我们只需要不同年龄的数据,加上 Distinct 关键字我们就可以获得不重复的数据。

2. 前言

本小节,我们将一起学习 SQL Distinct

Distinct 关键字既可以用来修饰单字段,也可以用来修饰多字段;在小节中,我们将分别介绍这两种情况的使用。

本小节测试数据如下,请先在数据库中执行:

DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
  id int,
  username varchar(20),
  age int
);
INSERT INTO imooc_user(id,username,age) 
VALUES(1,'pedro',23), (2,'mike',18), (3,'jerry',23), (4,'pedro',23);

3. 单字段查询

Distinct 多用于单字段查询去重。

语法如下:

SELECT DISTINCT [col] FROM [table_name];

其中col表示字段名,table_name表示数据表名称。

3.1 例1 查询年龄

请书写 SQL 语句,查询得到 imooc_user 表中所有的年龄值,且除去重复年龄。

分析 :

对于存在重复年龄的用户,使用 Select 搭配 Distinct 即可。

语句

SELECT DISTINCT age from imooc_user;

结果如下:

+-----+
| age |
+-----+
| 23  |
| 18  |
+-----+

在表中,pedro 与 jerry 二人的年龄相同,使用 Distinct 后,结果集中只有一个 23 。

如若上面语句没有使用 Distinct :

SELECT age from imooc_user;

结果如下:

+-----+
| age |
+-----+
| 23  |
| 18  |
| 23  |
| 23  |
+-----+

对比发现,Distinct 确实能够很好的完成去重工作。

4. 多字段查询

Distinct 也可用于多字段查询去重。

语法如下:

SELECT DISTINCT [col1],[col2] FROM [table_name];

其中col表示字段名,table_name表示数据表名称,数字1,2表示多个字段。

4.1 例2 查询用户名和年龄

请书写 SQL 语句,查询得到 imooc_user 中的所有用户名和年龄,要求结果不允许重复。

分析 :

按照上述语法写出查询语句即可。

语句

SELECT DISTINCT username,age from imooc_user;

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| pedro    | 23  |
| mike     | 18  |
| jerry    | 23  |
+----------+-----+

在表中,有两个名为 pedro 的用户,他们年龄也一致,在 Distinct 的作用下只返回了一个 pedro。

5. 小结

  • Distinct 非常实用,很多时候都会存在字段重复的问题,如同龄同班级同地区等等。
  • Distinct 是要付出代价的,去掉重复值带来的时间损耗比查询本身更耗时,因此也请慎用。
本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
© 2023 PV138 · 站点地图 · 免责声明 · 联系我们 · 问题反馈