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 )

 

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