首页 > 解决方案 > 如何删除mysql中所有重复的行

问题描述

这是我role_users的特定 id 表在此处输入图像描述

我想删除 role_id 和 user_id 的所有重复行,如果有 2 个或更多记录,那么应该只有 1 个最新记录,其他应该被删除。我怎么写这个。?

标签: mysqlsqldatetimejoinsql-delete

解决方案


您可以使用以下delete ... from ... join...语法:

delete r
from role_users r
inner join (
    select role_id, user_id, max(id) max_id
    from role_users
    group by role_id, user_id
) r1 
    on r.role_id = r1.role_id 
    and r.user_id = r1.user_id
    and r.id < r1.max_id

推荐阅读