MySQL 去重之distinct和group by以及结合count()的使用

MySQL 去重之distinct和group by以及结合count()的使用

MySQL 去重之distinct和group by以及结合count()的使用

在进行数据处理和分析时,经常需要对数据库中的数据进行去重操作。MySQL数据库提供了多种去重的方式,其中常用的有 DISTINCTGROUP BY,并且可以结合 COUNT() 函数使用。本文将详细介绍这两种去重方式的使用方法及其区别。

1. DISTINCT 去重

DISTINCT 关键字用于从结果集中删除重复的行。

使用方法

SELECT DISTINCT 列名 FROM 表名;

示例

假设有一个名为 students 的表,其中存储了学生的学号和姓名信息。我们需要获取所有学生的不重复的学号。

首先创建 students 表,并插入一些示例数据:

CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

INSERT INTO students (id, name) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Alice'),
(4, 'Charlie'),
(5, 'Charlie');

然后执行以下查询语句来获取不重复的学号:

SELECT DISTINCT id FROM students;

运行结果如下:

id
1
2
3
4
5

2. GROUP BY 去重

GROUP BY 关键字用于将结果集按照指定的列进行分组,并对每个组进行聚合操作。

使用方法

SELECT 列1, 列2, ..., 聚合函数(列) FROM 表名 GROUP BY 列1, 列2, ...;

示例

继续以 students 表为例,如果我们需要统计每个姓名在表中出现的次数,可以使用 GROUP BY 来实现。

SELECT name, COUNT(*) AS count FROM students GROUP BY name;

运行结果如下:

name count
Alice 2
Bob 1
Charlie 2

通过 GROUP BY,我们将学生的姓名分组,并使用 COUNT(*) 函数统计每个组中的记录数。可以看到,Alice 出现了两次,Bob 和 Charlie 分别出现了一次和两次。

3. DISTINCT vs GROUP BY

虽然 DISTINCTGROUP BY 都可以用于去重,但它们在使用上有一些区别。

1) 使用场景不同

  • DISTINCT:适用于简单的去重操作,只需要返回去重后的结果集。
  • GROUP BY:适用于需要根据某一列进行分组,并进行一些聚合操作(如 COUNT、SUM、AVG 等)的情况。

2) 查询结果不同

  • DISTINCT:返回指定列的不重复值。
  • GROUP BY:返回按照指定列分组后的结果,包括分组依据的列和聚合函数计算的结果。

3) 执行效率不同

  • DISTINCT:直接对结果集进行去重操作。
  • GROUP BY:先按照指定列进行排序,然后对排序后的结果进行分组和聚合。

由于 GROUP BY 需要对结果进行排序和分组操作,相比之下,DISTINCT 在处理简单的去重操作时一般会更高效。

4. DISTINCT 和 COUNT() 结合使用

除了单独使用 DISTINCTGROUP BY 进行去重操作外,我们还可以将它们与 COUNT() 函数结合使用,来计算某一列的不重复值的个数。

使用方法

SELECT COUNT(DISTINCT 列名) FROM 表名;

示例

继续以 students 表为例,我们需要统计学生的不重复姓名的个数。

SELECT COUNT(DISTINCT name) FROM students;

运行结果为 3,表示 students 表中共有 3 个不重复的学生姓名。

总结

本文详细介绍了 MySQLDISTINCTGROUP BY 两种去重操作的使用方法和区别,并展示了它们的示例和运行结果。其中,DISTINCT 适用于简单的去重操作,而 GROUP BY 适用于对结果进行分组和聚合操作的场景。此外,我们还可以结合 COUNT() 函数计算某一列的不重复值的个数。在实际应用中,根据具体的业务需求和数据情况选择合适的去重方式,以提高数据处理的效率和准确性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程