MySQL 处理重复数据学习笔记
去重复记录
在 MySQL 中,可以使用 DISTINCT 关键字来去除查询结果中的重复记录。例如,我们有一个表名为 students
,其中包含学生的名字、年龄和性别三个字段:
Copy Code+-------+-----+--------+
| name | age | gender |
+-------+-----+--------+
| Alice | 18 | female |
| Bob | 19 | male |
| Alice | 18 | female |
| Carl | 20 | male |
+-------+-----+--------+
如果我们要查询所有学生的名字,可以使用以下 SQL 语句:
Copy CodeSELECT 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 CodeSELECT 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 CodeSELECT 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 处理重复数据的学习笔记及实例。