mysql實作刪除重複數據

小云云
發布: 2023-03-22 14:36:01
原創
1942 人瀏覽過

本文主要和大家分享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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!