- 应用场景:
- 数据表具有多个字段,其中某个字段的值重复了,比如针对一个商品数据,商品对应的网址链接可能重复,但是其他字段不一样,此时我们只需要保留一个url即可,也即保留一整条数据,删除其他的。
- 注意事项:
- 中间的查询结果必须使用临时变量保存在一个表格中,因为不能把在同一表中查询的数据作为同一表的更新数据!
--假设根据字段‘url’来删除重复的值,只保留id最小的一个
--把url值重复的数据保存在临时表格a中
--把具有重复url值的最小id保存在临时表格b中
--删除具有重复url并且对应的id不在具有重复url的最小id列表内的数据
delete from TABLE where url in
(
select a.url from
(
select url from TABLE group by url having count(url)>1
)
as a
)
and id not in
(
select b.aa from
(
select min(id) as aa from TABLE group by url having count(url)>1
)
as b
)