mysql - 如何删除mysql中所有重复的行
问题描述
我想删除 role_id 和 user_id 的所有重复行,如果有 2 个或更多记录,那么应该只有 1 个最新记录,其他应该被删除。我怎么写这个。?
解决方案
您可以使用以下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
推荐阅读
- installation - Ubuntu 20.04.2.0 未安装在华硕 tuf a17 上
- flutter - 在 TextFormField 和 InputDecoration 中显示实际值
- sql - 查询从 JSON 文件 SQL Server 插入比预期更多的记录
- python - 将 pandas 数据帧格式从宽更改为长,类似于 pd.melt
- sqlalchemy - Sqlalchemy.exc.InvalidRequestError:会话处于准备状态
- python - 如何将 os.chdir 放入先前通过 os.path.join 在循环中创建的目录?
- python - 我怎样才能只得到这些行
- python - 如何检查线性回归算法的性能并改进?
- javascript - 截取响应体电子
- python - 如何将字符串和列表从 Python 传递到外部进程?