广告

sql如何去重查询

1. 简介

在处理大量数据的时候,经常会遇到需要去重查询的场景,SQL中提供了多种去重查询的方式,可以根据具体的业务需求选择合适的方式进行查询。

2. DISTINCT关键词去重查询

2.1 语法

SELECT DISTINCT column_name(s)

FROM table_name;

DISTINCT关键词用于在查询的时候去除重复的记录,只返回唯一的记录。

在上述语法中,column_name是要去重的列名,table_name是要查询的表名。

2.2 示例

假设我们有一张员工表employees,包含了每个员工的姓名和所在部门,如下所示:

sql如何去重查询

姓名部门
张三销售部
李四人力资源部
王五研发部
张三销售部
赵六财务部
王五研发部

如果要查询所有员工所在的部门,但是不想出现重复的部门名称,可以使用DISTINCT关键词:

SELECT DISTINCT 部门

FROM employees;

查询结果如下:

部门
销售部
人力资源部
研发部
财务部

3. GROUP BY关键词去重查询

3.1 语法

SELECT column_name(s)

FROM table_name

GROUP BY column_name(s);

GROUP BY关键词用于在查询的时候按照指定的列对记录进行分组,并且可以对每组记录进行聚合计算。

在上述语法中,column_name是要分组的列名,table_name是要查询的表名。

3.2 示例

继续使用上面的员工表employees,如果想要查询每个部门的员工数量,可以使用GROUP BY关键词:

SELECT 部门, COUNT(*) AS 员工数量

FROM employees

GROUP BY 部门;

查询结果如下:

部门员工数量
销售部2
人力资源部1
研发部2
财务部1

4. HAVING子句去重查询

4.1 语法

SELECT column_name(s)

FROM table_name

GROUP BY column_name(s)

HAVING condition;

HAVING子句用于在分组之后过滤掉不符合条件的记录。

在上述语法中,column_name是要分组的列名,table_name是要查询的表名,condition是筛选条件。

4.2 示例

继续使用上面的员工表employees,如果想要查询每个部门员工数量大于等于2的部门,可以使用GROUP BY关键词和HAVING子句:

SELECT 部门, COUNT(*) AS 员工数量

FROM employees

GROUP BY 部门

HAVING COUNT(*) >= 2;

查询结果如下:

部门员工数量
销售部2
研发部2

5. UNION关键词去重查询

5.1 语法

SELECT column_name(s)

FROM table_name1

UNION

SELECT column_name(s)

FROM table_name2;

UNION关键词用于将两个或多个SELECT语句的结果集合并到一起,并且去掉重复的记录。

在上述语法中,column_name是要查询的列名,table_name1和table_name2是要查询的表名。

5.2 示例

假设我们有两张学生表:student_1和student_2,每张表包含了学生的姓名和成绩,如下所示:

表名姓名成绩
student_1张三90
student_1李四80
student_1王五85
student_2张三90
student_2赵六75
student_2钱七95

如果想要查询所有学生的姓名和成绩,可以使用UNION关键词:

SELECT 姓名, 成绩

FROM student_1

UNION

SELECT 姓名, 成绩

FROM student_2;

查询结果如下:

姓名成绩
张三90
李四80
王五85
赵六75
钱七95

6. 结论

以上就是常见的SQL去重查询方式,根据实际情况选择合适的方式可以大大提高SQL的执行效率。

广告

数据库标签