MySQL 处理重复数据学习笔记

去重复记录

在 MySQL 中,可以使用 DISTINCT 关键字来去除查询结果中的重复记录。例如,我们有一个表名为 students,其中包含学生的名字、年龄和性别三个字段:

Copy Code
+-------+-----+--------+ | name | age | gender | +-------+-----+--------+ | Alice | 18 | female | | Bob | 19 | male | | Alice | 18 | female | | Carl | 20 | male | +-------+-----+--------+

如果我们要查询所有学生的名字,可以使用以下 SQL 语句:

Copy Code
SELECT DISTINCT name FROM students;

执行结果如下:

Copy Code
+-------+ | name | +-------+ | Alice | | Bob | | Carl | +-------+

合并重复记录

有时候我们需要将重复记录合并成一条记录。MySQL 中可以使用 GROUP BY 和聚合函数来完成这个任务。

假设我们有一个表名为 orders,其中包含订单号、客户姓名和订单金额三个字段:

Copy Code
+-----------+----------+--------+ | order_num | cust_name| amount | +-----------+----------+--------+ | 1 | Alice | 100 | | 2 | Bob | 50 | | 3 | Alice | 200 | | 4 | Carl | 150 | +-----------+----------+--------+

如果我们要计算每个客户的订单总金额,可以使用以下 SQL 语句:

Copy Code
SELECT cust_name, SUM(amount) FROM orders GROUP BY cust_name;

执行结果如下:

Copy Code
+----------+-------------+ | cust_name| SUM(amount) | +----------+-------------+ | Alice | 300 | | Bob | 50 | | Carl | 150 | +----------+-------------+

示例

以下是使用 DISTINCT 和 GROUP BY 处理重复数据的一个示例。假设我们有一个 sales 表,其中包含销售记录的日期、客户姓名和销售额三个字段:

Copy Code
+------------+----------+--------+ | sale_date | cust_name| amount | +------------+----------+--------+ | 2023-06-01 | Alice | 100 | | 2023-06-02 | Bob | 50 | | 2023-06-03 | Alice | 200 | | 2023-06-03 | Carl | 150 | +------------+----------+--------+

如果我们要查询每日销售总额和唯一客户数量,可以使用以下 SQL 语句:

Copy Code
SELECT sale_date, SUM(amount), COUNT(DISTINCT cust_name) FROM sales GROUP BY sale_date;

执行结果如下:

Copy Code
+------------+-------------+------------------------+ | sale_date | SUM(amount) | COUNT(DISTINCT cust_name) | +------------+-------------+------------------------+ | 2023-06-01 | 100 | 1 | | 2023-06-02 | 50 | 1 | | 2023-06-03 | 350 | 2 | +------------+-------------+------------------------+

以上就是 MySQL 处理重复数据的学习笔记及实例。