在SQL查询中,`DISTINCT` 是一个非常有用的关键词,用于去除结果集中的重复行。它可以帮助我们从数据表中提取唯一值,从而简化数据分析过程。本文将通过四个具体的例子来详细说明 `DISTINCT` 的使用方法。
示例一:基本用法
假设有一个名为 `employees` 的表,包含以下字段:`id`, `name`, `department` 和 `salary`。如果我们要查询所有不同的部门名称,可以使用如下语句:
```sql
SELECT DISTINCT department FROM employees;
```
这条语句会返回 `employees` 表中所有不重复的部门名称列表。这是 `DISTINCT` 最常见的用法之一。
示例二:结合多列使用
有时候,我们需要根据多个字段来判断哪些记录是唯一的。例如,如果想找出每个员工的唯一组合(即没有重复的姓名和部门),可以这样写:
```sql
SELECT DISTINCT name, department FROM employees;
```
这将返回 `employees` 表中所有不同组合的员工姓名和部门。
示例三:与聚合函数一起使用
`DISTINCT` 也可以和聚合函数如 `COUNT()` 结合使用,以统计某个字段的不同值的数量。比如,要计算有多少个不同的部门:
```sql
SELECT COUNT(DISTINCT department) AS unique_departments FROM employees;
```
这里 `COUNT(DISTINCT department)` 计算的是 `department` 字段中唯一值的数量,并将其命名为 `unique_departments`。
示例四:嵌套查询中的应用
在复杂的查询中,`DISTINCT` 可能会被嵌套在一个子查询中。例如,如果我们想要找到那些工资高于平均工资的所有员工的名字,可以这样做:
```sql
SELECT name FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
```
虽然这个例子本身并没有直接使用 `DISTINCT`,但如果我们在子查询中加入 `DISTINCT`,则可以确保即使存在重复的数据,也能得到准确的结果。例如:
```sql
SELECT name FROM employees WHERE salary > (SELECT DISTINCT AVG(salary) FROM employees);
```
以上四个例子展示了 `DISTINCT` 在不同场景下的灵活运用。掌握这些技巧,可以帮助你更高效地处理数据库中的数据。希望本文对你有所帮助!