mysql 重复数据的处理 查询 删除 select delete【通用】【全网最详细】

本文介绍了如何在MySQL中使用SQL语句检测和删除重复数据,包括创建表、插入数据、查询重复名称、根据update_time或id保留最新记录,以及处理时间相同情况下的删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

省流:

xxx是表名。name是有重复值的字段(即列名)。 id是自增,id越大,说明创建时间越近。

delete from t1 using xxx as t1, xxx as t2 
where t1.name = t2.name and t1.id < t2.id;

正文:

案例如下

一、建表 

CREATE TABLE `emp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
)  AUTO_INCREMENT=0

二、造数据 

INSERT INTO emp
(name, update_time)
VALUES
('张三', '2023-09-06 00:00:00'),
('张三', '2023-09-06 00:00:00'),
('张三', '2023-09-06 00:00:00'),
('李四', '2023-09-06 00:00:00'),
('李四', '2023-09-06 00:00:00'),
('王五', '2023-09-06 00:00:00');

结果: 

id|name|update_time        |
--+----+-------------------+
 1|张三  |2023-09-06 00:00:00|
 2|张三  |2023-09-06 00:00:00|
 3|张三  |2023-09-06 00:00:00|
 4|李四  |2023-09-06 00:00:00|
 5|李四  |2023-09-06 00:00:00|
 6|王五  |2023-09-06 00:00:00|

三、查询(将重复的数据查出来) 

1.查出重复的名字

-- 查出重复的数据 重复的名字是哪个
select name from emp group by name having count(1)>1;

 结果:

name|
----+
张三  |
李四  |

 2.通过上面查出的名字作为条

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

globalcoding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值