SQL DISTINCT关键字:删除重复记录
数据表中有时候会有重复的记录,如果您只需要其中一条,就可以使用 DISTINCT 关键字。
关于 UNIQUE 关键字
UNIQUE 和 DISTINCT 的效果是等价的,都用来消除结果集中的重复记录,但是 UNIQUE 是一种老式的语法,Oracle 数据库曾经使用过。后来 ANSI(美国国家标准委局)将 DISTINCT 定义为正式的关键字,Oracle 也随即增加了对 DISTINCT 的支持;但是为了保持向后兼容,Oracle 并没有取消 UNIQUE 关键字。
语法
DISTINCT 关键字的基本语法格式如下:
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
示例
现在有包含如下记录的 website 表:
+----+----------------+----------------------------+-----+-------+---------+---------+
| id | name | url | age | alexa | uv | country |
+----+----------------+----------------------------+-----+-------+---------+---------+
| 1 | 百度 | https://www.baidu.com/ | 20 | 4 | 5010.5 | CN |
| 2 | 淘宝 | https://www.taob网站站点" rel="nofollow" />
SELECT age, country FROM website
ORDER BY age;
执行结果:
可以看到,age=15 和 country=US、age=20 和 country=CN 都重复出现了两次,这是因为原始表中就包含重复的记录。+-----+---------+
| age | country |
+-----+---------+
| 11 | RU |
| 12 | CN |
| 15 | US |
| 15 | US |
| 20 | CN |
| 20 | CN |
| 23 | US |
| 23 | RU |
+-----+---------+
现在,我们在 SELECT 语句中加入 DISTINCT 关键字,去除重复的记录:
SELECT DISTINCT age, country FROM website
ORDER BY age;
执行结果:
可以看到,age=15 和 country=US、age=20 和 country=CN 都只出现了一次,重复记录被去除。+-----+---------+
| age | country |
+-----+---------+
| 11 | RU |
| 12 | CN |
| 15 | US |
| 20 | CN |
| 23 | RU |
| 23 | US |
+-----+---------+