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

一个新手
發布: 2017-10-13 10:11:18
原創
2083 人瀏覽過

在網路上尋找刪除重複資料保留id最小的數據,方法如下:


DELETE
FROM
    people
WHERE
    peopleName IN (
        SELECT
            peopleName
        FROM
            people
        GROUP BY
            peopleName
        HAVING
            count(peopleName) > 1
    )
AND peopleId NOT IN (
    SELECT
        min(peopleId)
    FROM
        people
    GROUP BY
        peopleName
    HAVING
        count(peopleName) > 1
)
登入後複製

自己使用的時候顯示報錯:


1 delete from tb where id in (SELECT max(id) from tb GROUP BY user HAVING count(user)>1)
登入後複製

[Err] 1093 - You can't specify target table 'XXX' for update in FROM clause

暫時不知道是什麼原因導致的。

然後想辦法分散操作,先篩選出有重複user的數據,然後用max()選出其中較大的那一行:

SELECT max(id) from tb GROUP BY user HAVING count(user)>1

然後再根據得到的max(id)逐條刪除多餘的資料


1 delete from tb where id=xx
登入後複製

以上是Mysql刪除重複資料保留最小的id的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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