mysql刪除多餘重複數據

需求爲刪除mysql數據庫中重複數據,保留第一條

初步代碼爲:

DELETE
FROM
    base_phone_lable
WHERE
    phone IN (
        SELECT
            phone
        FROM
            base_phone_lable
        GROUP BY
            phone
        HAVING
            count(phone) > 1
    )
AND id NOT IN (
    SELECT
        min(id)
    FROM
        base_phone_lable
    GROUP BY
        phone
    HAVING
        count(phone) > 1
)

 

運行報錯

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

意思爲不能在查詢該字段的同時修改該字段

搜索得到解決方式爲,將查詢嵌套爲孫子嵌套就可解決,解決代碼爲

DELETE
FROM
    base_phone_lable
WHERE
    phone IN (SELECT a.phone FROM(
        SELECT
            phone
        FROM
            base_phone_lable
        GROUP BY
            phone
        HAVING
            count(phone) > 1
    ) as a)
AND id NOT IN (SELECT b.minid FROM(
    SELECT
        min(id) as minid
    FROM
        base_phone_lable
    GROUP BY
        phone
    HAVING
        count(phone) > 1
) as b )

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章