每天学习一点MySQL系列(5)— 根据表中的某个字段删除重复的数据,只保留一个

  • 应用场景:
    • 数据表具有多个字段,其中某个字段的值重复了,比如针对一个商品数据,商品对应的网址链接可能重复,但是其他字段不一样,此时我们只需要保留一个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
) 
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章