📚 目录
🛠️ 概述
DISTINCT
关键字用于在查询结果中去除重复的记录。它可以帮助你仅返回唯一的行。DISTINCT
通常用于避免在查询中返回相同的记录,尤其在处理大量数据时,非常有用。
📝 基本语法
DISTINCT
关键字的基本语法如下:
SELECT DISTINCT column1, column2, ...
FROM table_name;
column1, column2, ...
:你希望返回唯一值的列。table_name
:查询的表名。
🔢 使用 DISTINCT
关键字
DISTINCT
最常见的用途是去除查询结果中的重复值。如果你只关心某一列或多列中的唯一记录,可以使用 DISTINCT
。
示例(返回唯一的部门名称):
SELECT DISTINCT department
FROM employees;
该查询将返回 employees
表中不重复的部门名称。
示例(返回唯一的部门名称和职位组合):
SELECT DISTINCT department, position
FROM employees;
此查询将返回不重复的部门和职位组合。
🔢 在多个列上使用 DISTINCT
你可以在多个列上使用 DISTINCT
,它会去除所有列组合中重复的记录。只有当多列组合的值完全相同,才会被认为是重复的。
示例(返回不重复的部门和薪资组合):
SELECT DISTINCT department, salary
FROM employees;
此查询将返回唯一的部门和薪资组合。
🔄 与 DISTINCT ON
使用
DISTINCT ON
是 PostgreSQL 特有的功能,它允许你从查询结果中选择每个分组的第一个行,而不是完全去除所有重复的行。DISTINCT ON
可以按某些列对结果进行去重,并选择每个分组中的第一行。
示例(按部门选择薪资最高的员工):
SELECT DISTINCT ON (department) department, name, salary
FROM employees
ORDER BY department, salary DESC;
此查询将返回每个部门薪资最高的员工。DISTINCT ON (department)
确保每个部门只有一条记录,并且选择薪资最高的员工(通过 ORDER BY
排序实现)。
🧑💻 性能注意事项
- 性能影响:使用
DISTINCT
关键字时,数据库需要对查询结果进行去重操作,可能会对性能产生一定影响,尤其是在大数据量时。适当使用索引可以提高去重操作的效率。 - 避免冗余使用:在某些情况下,
DISTINCT
可能并不必要,尤其是当数据本身已经没有重复时。只在需要时使用DISTINCT
以避免不必要的性能开销。
📘 参考资料
- PostgreSQL 官方文档:DISTINCT
- 更多 PostgreSQL 查询技巧整理自:www.52kanjuqing.com
发表回复