当我们从MySQL数据库中查询数据时,有时候会发现查询结果出现了重复的行,如果这样我们又想要保证结果唯一,这时候我们可以使用MySQL关键字DISTINCT
来确保查询结果的唯一性。本文将详细介绍DISTINCT
的用法和使用场景。
MySQL中DISTINCT
的语法如下所示:
SELECT DISTINCT column_name(s)
FROM table_name;
在语法中,DISTINCT
关键字指示查询结果应该只返回唯一的值。
我们以以下product
表为例:
id | name | price |
---|---|---|
1 | 苹果 | 10.0 |
2 | 香蕉 | 8.0 |
3 | 苹果 | 12.0 |
4 | 橙子 | 6.0 |
5 | 香蕉 | 7.5 |
6 | 葡萄 | 11.0 |
下面的查询没有使用DISTINCT
关键字:
SELECT name FROM product;
执行结果如下:
name |
---|
苹果 |
香蕉 |
苹果 |
橙子 |
香蕉 |
葡萄 |
我们现在使用DISTINCT
关键字来执行查询:
SELECT DISTINCT name FROM product;
执行结果如下:
name |
---|
苹果 |
香蕉 |
橙子 |
葡萄 |
我们再以以下employee
表为例:
id | name | department |
---|---|---|
1 | 张三 | 技术部 |
2 | 李四 | 人事部 |
3 | 王五 | 财务部 |
4 | 张三 | 技术部 |
5 | 李四 | 人事部 |
6 | 赵六 | 财务部 |
我们现在要查询每个部门的员工数量。使用以下查询语句:
SELECT department, COUNT(id) AS num FROM employee GROUP BY department;
执行结果如下:
department | num |
---|---|
技术部 | 2 |
人事部 | 2 |
财务部 | 2 |
可以发现结果的每个部门出现了两次,造成了数据的冗余。我们现在使用DISTINCT
关键字:
SELECT DISTINCT department, COUNT(id) AS num FROM employee GROUP BY department;
执行结果如下:
department | num |
---|---|
技术部 | 2 |
人事部 | 2 |
财务部 | 2 |
这次结果不再重复,而且我们达到了我们想要的查询结果。
DISTINCT
关键字是MySQL中常用的关键字之一,使用它可以有效地去重,避免查询结果出现重复的数据。在使用DISTINCT
的时候,需要注意其应用的场景,不要过度使用,以避免造成性能问题。
本文链接:http://task.lmcjl.com/news/18295.html