例:
id | name | login_date |
---|---|---|
1 | 张三 | 2023-04-29 |
2 | 张三 | 2023-04-30 |
3 | 李四 | 2023-04-30 |
4 | 王五 | 2023-04-30 |
5 | 张三 | 2023-04-30 |
6 | 李四 | 2023-04-30 |
7 | 王五 | 2023-05-01 |
8 | 张三 | 2023-05-01 |
9 | 李四 | 2023-05-01 |
10 | 王五 | 2023-05-01 |
因为表的主键(id)是唯一的,所以只需要找到重复数据其中一条的主键(id),再通过主键(id)删除其他重复数据即可。
1、获取重复数据其中一条的主键:
SELECT Min(id) as id
FROM table
GROUP BY name,login_date
结果:
id |
---|
1 |
2 |
3 |
4 |
7 |
8 |
9 |
2、删除重复数据:
DELETE FROM table
WHERE id NOT IN(
SELECT Min(id) as id
FROM table
GROUP BY name,login_date)
3、查询数据:
SELECT *
FROM table
结果:
id | name | login_date |
---|---|---|
1 | 张三 | 2023-04-29 |
2 | 张三 | 2023-04-30 |
3 | 李四 | 2023-04-30 |
4 | 王五 | 2023-04-30 |
7 | 王五 | 2023-05-01 |
8 | 张三 | 2023-05-01 |
9 | 李四 | 2023-05-01 |