使用SQLDISTINCT删除重复数据项

更新时间:2023-07-11 19:01:38 阅读: 评论:0

使⽤SQLDISTINCT删除重复数据项
在本教程中,我们将学习如何使⽤SQL DISTINCT运算符从结果集中删除重复数据项。
1. SQL DISTINCT运算符简介
主键确保表没有重复的⾏。但是,当您使⽤SELECT语句查询表中的⼀部分列时,可能会得到重复数据项。
要从结果集中删除重复数据项,请在SELECT⼦句中插⼊DISTINCT运算符,如下所⽰:
SELECT DISTINCT
column1, column2, ...
FROM
table1;
如果在DISTINCT运算符后使⽤⼀列,则数据库系统使⽤该列来计算重复。如果使⽤两列或更多列,数据库系统将使⽤这些列的组合进⾏重复检查。
要删除重复项,数据库系统⾸先按SELECT⼦句中指定的每个列对结果集进⾏排序。然后,它从上到下扫描表,以识别彼此相邻的重复项。如果结果集很⼤,则排序和扫描操作可能会降低查询的性能。
2. SQL DISTINCT⽰例
我们将使⽤中的employees表来演⽰DISTINCT运算符的⼯作原理。
3. SQL DISTINCT⼀列⽰例
以下语句从employees表中检索薪⽔数据,并按降序对其进⾏排序。
SELECT
salary
FROM
employees
ORDER BY salary DESC;
执⾏上⾯查询语句,得到以下结果 -
+--------+
| salary |
+--------+
| 24000  |
| 17000  |
| 17000  |
| 14000  |
| 13500  |
| 13000  |
... ...
如上所见,有重复的薪资数据,例如17,000,因为两个或更多员⼯的薪⽔相同。要删除重复项,请将DISTINCT运算符添加到SELECT⼦句,如下所⽰:
SELECT
DISTINCT salary
FROM
employees
ORDER BY salary DESC;
执⾏上⾯查询语句,得到以下结果 -
+--------+
| salary |
+--------+
| 24000  |
| 17000  |
| 14000  |
| 13500  |
| 13000  |
| 12000  |
... ...
现在,从结果集中删除所有重复项。
4. SQL DISTINCT多列⽰例
以下语句从employees表中检索job_id和salary列的数据。
SELECT
点亮灯泡job_id,
salary
FROM
employees
ORDER BY
job_id,
salary DESC;
执⾏上⾯查询语句,得到以下结果 -
+--------+--------+
| job_id | salary |
+--------+--------+
|      1 | 8300  |
|      2 | 12000  |
搞笑图片动态
|      3 | 4400  |
哈哈镜子
|      4 | 24000  |
|      5 | 17000  |
|      5 | 17000  |
... ...
上⾯查询结果集中,有两⾏记录相同:job_id是5和salary是17000两⾏记录。
现在,如果将DISTINCT运算符添加到SELECT⼦句,则数据库系统将使⽤job_id和salary列中的值来计算重复项。它只保留⼀个⾏记录,如上⾯的屏幕截图所⽰。
猴头菇的做法
SELECT DISTINCT
job_id,
salary
FROM
正月十五歌曲employees
ORDER BY
job_id,
拢字组词salary DESC;
执⾏上⾯查询语句,得到以下结果 -
+--------+--------+
| job_id | salary |
+--------+--------+
|      1 | 8300  |
|      2 | 12000  |
|      3 | 4400  |
|      4 | 24000  |
|      5 | 17000  |
|      6 | 9000  |
|      6 | 8200  |
......
5. SQL DISTINCT和NULL值
值在SQL中是⼀个特别的值。它在某些情况下⽤作标记,⽐如:缺少信息或信息不适⽤。因此,NULL⽆法与任何值进⾏⽐较。即使NULL也不等于它⾃⼰。如果列中有两个或多个NULL值,数据库系统是否将它们视为相同或不同的值?
通常,DISTINCT运算符将所有NULL值视为相同的值。因此在结果集中,DISTINCT运算符只保留⼀个NULL值,并从结果集中删除其它
的NULL值。
以下语句返回员⼯的不同电话号码。
SELECT DISTINCT
phone_number
FROM
employees;
执⾏上⾯查询语句,得到以下结果 -
+----------------+
| phone_number  |
+----------------+
情侣物品
| 0532-********  |
| 0551-*******  |
| 0571-********  |
......
| NULL          |
| 0351-*******  |
| 021-********  |
杏仁孕妇可以吃吗| 010-********  |
| 0755-********  |
| 0755-********  |
| 0513-********  |
| 0898-********  |
| 022-********  |
+----------------+
34 rows in t
请注意,它只返回⼀个NULL值。
在本教程中,您学习了如何使⽤DISTINCT运算符从结果集中删除重复的⾏。

本文发布于:2023-07-11 19:01:38,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1091206.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结果   语句   运算符   查询   集中   删除   得到   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图