📜  如何使用 sql 查询过滤重复的相同结果 - SQL (1)

📅  最后修改于: 2023-12-03 15:23:57.710000             🧑  作者: Mango

如何使用 SQL 查询过滤重复的相同结果 - SQL

在数据库中,有时我们需要从重复数据中筛选出唯一的记录。可以使用 SQL 来过滤掉重复的相同结果,本文将介绍如何实现这一功能。

使用 DISTINCT 关键字过滤重复数据

在查询数据时,我们可以使用 DISTINCT 关键字来获取唯一的数据。例如:

SELECT DISTINCT column1, column2, column3
FROM table_name;

上述语句将从 "table_name" 表中选择 "column1", "column2" 和 "column3" 列,并返回不重复的结果。

使用 GROUP BY 关键字分组数据

除了使用 DISTINCT 关键字,还可以使用 GROUP BY 关键字来对某些列进行分组,以便获取唯一的结果。例如:

SELECT column1, column2, column3
FROM table_name
GROUP BY column1, column2, column3;

上述语句将从 "table_name" 表中选择 "column1", "column2" 和 "column3" 列,并根据这些列进行分组,返回每个组的唯一结果。

使用 HAVING 关键字过滤分组结果

如果要对分组后的数据进行筛选,可以使用 HAVING 关键字。例如:

SELECT column1, column2, column3
FROM table_name
GROUP BY column1, column2, column3
HAVING COUNT(*) > 1;

上述语句将从 "table_name" 表中选择 "column1", "column2" 和 "column3" 列,并根据这些列进行分组。然后,使用 COUNT(*) 函数计算每个组的行数,并过滤掉行数大于 1 的组,返回筛选后的结果。

示例

假设我们有以下 "employees" 表格:

| employee_id | first_name | last_name | |-------------|------------|-----------| | 1 | John | Doe | | 2 | Jane | Doe | | 3 | John | Smith | | 4 | Jane | Smith |

我们可以使用以下 SQL 语句来筛选唯一的员工:

SELECT DISTINCT first_name, last_name
FROM employees;

上述语句将返回以下结果:

| first_name | last_name | |------------|-----------| | John | Doe | | Jane | Doe | | John | Smith | | Jane | Smith |

我们也可以使用以下 SQL 语句来分组员工:

SELECT first_name, last_name, COUNT(*) as count
FROM employees
GROUP BY first_name, last_name;

上述语句将返回以下结果:

| first_name | last_name | count | |------------|-----------|-------| | John | Doe | 1 | | Jane | Doe | 1 | | John | Smith | 1 | | Jane | Smith | 1 |

最后,我们可以使用以下 SQL 语句过滤掉只出现过一次的员工:

SELECT first_name, last_name, COUNT(*) as count
FROM employees
GROUP BY first_name, last_name
HAVING COUNT(*) > 1;

上述语句将返回以下结果:

| first_name | last_name | count | |------------|-----------|-------| | John | Doe | 1 | | Jane | Doe | 1 | | John | Smith | 1 | | Jane | Smith | 1 |

在本例中,由于没有重复的记录,HAVING 关键字没有起作用。但是,如果有重复的记录,且我们只想返回出现次数大于 1 的记录,则可以使用上述查询。

总结

使用 SQL 查询过滤重复的相同结果可以使用 DISTINCT 和 GROUP BY 关键字。如果需要进一步筛选分组后的结果,则可以使用 HAVING 关键字。

以上是如何使用 SQL 查询过滤重复的相同结果的介绍。