概要
在Mysql中删除重复数据
方法一:创建临时表
创建临时表 弊端id等字段会变化
思路:
1.将原来表结构复制出来,创建新表;2.用sql将过滤出来的数据新增到新表里;3.删除原来的表,给新表改名。
1、使用语句创建临时表,id设置为自增
CREATE TABLE `life_cycle_more_new_more` (
`CREATOR_ID` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人ID',
`CREATE_TIME` date NOT NULL COMMENT '创建时间',
`UPDATE_ID` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '更改人ID',
、、、
)
2、用sql语句新增数据
insert into life_cycle_more_new
(plan_id,order_id,order_no,arrival_id,arrival_no,info_id,info_no)
select DISTINCT a.plan_id,a.order_id,a.order_no,a.arrival_id,a.arrival_no,
a.info_id,info_no from life_cycle_more as a
3.删除旧表
DROP TABLE table1;
方法二:子查询
思路:
1.将该表复制一份(带数据);2.使用sql进行删除
DELETE from life_cycle_more where id not in
(select MIN(ID) FROM life_cycle_more_copy1 GROUP BY plan_id,order_id,arrival_id,info_id);
为什么要复制出一个新表,因为同一个表会报错
You can’t specify target table ‘life_cycle_more’ for update in FROM clause