首頁  >  文章  >  後端開發  >  mysql實作刪除重複數據

mysql實作刪除重複數據

小云云
小云云原創
2018-03-28 13:59:241913瀏覽

本文主要和大家分享mysql實現刪除重複數據,本文結合實例和大家講解,希望能幫助大家。

delete FROM `ex` WHERE phone in (SELECT c.phone
FROM `ex` as c
GROUP BY c.phone

#HAVING COUNT( * ) > ;1) and id not in (select max(b.id) from `ex` as b group by b.phone);

註:ex(example 表名)、根據phone字段,判斷是否重複。重複保留最新插入的一條(即自增id最大的)

但是,執行之後,結果不如你所願:

/* SQL錯誤(1093):You can't specify target table 'ex' for update in FROM clause */

翻譯:不能先select出同一表中的某些值,再update(delete)這個表(在同一語句中),即不能依據某字段值做判斷再來更新某字段的值。

問題只針對:mysql,不包含oracle、sql server等。因為mysql對子語句的支持性不是太好。

問題解決:


 先select出的結果再通過中間表select一遍,select 的結果 起別名 就成為一個快取的表了, 一張虛擬的表。

如圖:就解決了mysql一條sql刪除重複訊息了。

為了大家方便:

DELETE  FROM   `ex`   WHERE  id NOT IN (  SELECT  id  FROM  (SELECT max(b.id) AS id  FROM `ex`  b  GROUP BY b.phone) b);

相關推薦:

##Mysql刪除重複資料保留最小的id

刪除重複資料sql語句

#MySQL刪除重複資料行,只儲存一則

以上是mysql實作刪除重複數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:phpCOW機制詳解下一篇:phpCOW機制詳解