每天學習一點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
) 
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章