mysql 删除重复行

1、根据单行判断重复

(1)查找重复项

SELECT *
FROM
    graph_disease_corresponding
WHERE
    diag_pingan IN (
                SELECT
                    diag_pingan
                FROM
                    `graph_disease_corresponding`
                GROUP BY
                    diag_pingan
                HAVING
                    COUNT(diag_pingan) > 1
    )

(2)删除重复项(根据多列进行删除且保留ID最小的一条)

DELETE
FROM
    graph_disease_corresponding
WHERE
    diag_pingan IN (
        SELECT
            diag_pingan
        FROM
            (
                SELECT
                    diag_pingan
                FROM
                    `graph_disease_corresponding`
                GROUP BY
                    diag_pingan
                HAVING
                    COUNT(diag_pingan) > 1
            ) a
    )
AND id NOT IN (
    SELECT
        *
    FROM
        (
            SELECT
                MIN(id)
            FROM
                graph_disease_corresponding
            GROUP BY
                diag_pingan
            HAVING
                COUNT(diag_pingan) > 1
        ) b
);
原文地址:https://www.cnblogs.com/kwzblog/p/14108558.html