mysql删除重复数据

来源:互联网 发布:大众网络报 微信 编辑:程序博客网 时间:2024/06/05 11:28

mysql不可以删除查询出自己标的数据

DELETE
FROM
    maintain_account
WHERE
    id IN (
        SELECT
            id
        FROM
            maintain_account
        GROUP BY
            nick
        HAVING
            count(*) > 1
    )

这样会报错,[Err] 1093 - You can't specify target table 'maintain_account' for update in FROM clause

修改为如下就可以了

DELETE
FROM
    maintain_account
WHERE
    id IN (
        SELECT
            *
        FROM
            (
                SELECT
                    id
                FROM
                    maintain_account
                GROUP BY
                    nick
                HAVING
                    count(*) > 1
            ) b
    )

删除重复数据,保留最小id的值

DELETE
FROM
    maintain_account
WHERE
    id NOT IN (
        SELECT
            *
        FROM
            (
                SELECT
                    min(id) AS minid
                FROM
                    maintain_account
                GROUP BY
                    nick
            ) b
    )

原创粉丝点击