- 如果一个表里有这样的数据:
- 注意: id为2,3的记录除了id是完全相同的。如果表里有大量这样重复的数据呢?如何删除?
首先先选出这样的重复数据,我是根据name,parent,org,time,category字段判断两行记录是相同的,所以要group by这几个字段
group by 能够根据多个列进行分组
select id from pms GROUP BY name,parent,org,time,category
- 结果:
好了,有了这些id,一个子查询就能删除了
delete from pms where id not in
( select id from pms group by name,parent,org,time,category)
- 结果:
报错了,原因:不能在同一表中查询的数据作为同一表的更新数据。
我们可以将查询出来的数据放在一个子查询里,并且筛选出相同数据中id最大的那一行,然后删除那些id不在子查询李的id
delete from pms where id not in
(select a_id from
(select max(id) a_id from pms GROUP BY name,parent,org,time,category) as a
)
结果:
已经删掉了