mysql - 如何删除重复行分组两列?
问题描述
我的数据库中有一个表(婴儿姓名),其中包含要删除的重复记录。
我表中的前记录
id category_id baby_name url_role
1 6 karthik karthik
2 7 kalaivanan kalaivanan
3 4 arun arun
4 6 vijayakumar vijayakumar
5 6 karthik karthik
6 6 karthik karthik
7 4 karthik karthik
9 6 vijayakumar vijayakumar
8 4 karthik karthik
我需要结果
id category_id baby_name url_role
1 6 karthik karthik
2 7 kalaivanan kalaivanan
3 4 arun arun
4 6 vijayakumar vijayakumar
7 4 karthik karthik
我需要删除在同一类别中发现的具有相同 baby_name 的重复记录。我不想为此创建一个包含不同条目的新表。我需要在不创建任何新表的情况下从现有表中删除重复条目。
DELETE FROM babynames
WHERE id NOT IN
( SELECT MIN(id)
FROM babynames
GROUP BY baby_name,category_id
)
解决方案
您可以使用EXISTS
子句,注意将内部包装FROM
到子查询中以避免可怕的
您不能在 FROM 子句中指定目标表“x”进行更新
错误:
DELETE b
FROM babynames b
WHERE EXISTS (SELECT *
FROM (SELECT * FROM babynames) b1
WHERE b1.category_id = b.category_id
AND b1.baby_name = b.baby_name
AND b1.id < b.id)
输出:
id category_id baby_name url_role
1 6 karthik karthik
2 7 kalaivanan kalaivanan
3 4 arun arun
4 6 vijayakumar vijayakumar
7 4 karthik karthik
推荐阅读
- python - PN532 将 URL 写入 NFC 标签
- nlp - 谷歌助手在生成答案时会发送整个语音或文本吗?
- ios - 当我的颤振模块通过 CocoaPods 嵌入 iOS 时如何使用 --dart-define
- pandas - 根据熊猫索引对numpy数组中的n个值求和
- docker - Windows 10 错误:链码安装失败,状态为:500
- docker - Kubernetes 无法从 gitlab 注册表中提取图像 unknown-sha256: <4ca..252> 意外提交摘要前提条件
- javascript - 顺序调用异步函数
- azure - 如何为开发人员提供通过 p2s vpn 访问 Azure-sql 服务器的权限
- angular - Angular:如果用户单击屏幕上的任何位置,则关闭 sidenav
- node.js - 节点中的 Cassandra 驱动程序包不会从 Cassandra 表中流式传输所有行