mysql - 删除具有相同列值的记录?
问题描述
好吧,我有一些具有相同 address_id 记录的表,我想将它们全部删除,或者(如果可能的话)在第一个记录之后全部删除,例如:
id | person_id | address_id
1 80 3
2 226 3
3 31 5
4 46 9
5 11 9
6 123 9
在这种情况下,我想删除 id (2, 5,6) 的记录。
这是我的查询,但我收到错误:
您不能在 FROM 子句中指定目标表 'person_address' 进行更新
DELETE FROM person_address WHERE id IN (
SELECT address_id
FROM person_address
WHERE person_address.person_id < 100
GROUP BY address_id
HAVING count(*) > 1
)
选择工作正常。
解决方案
您的选择似乎也不正确。你可以试试这样的 -
delete from person_address
where id not in (select *
from (SELECT min(id)
FROM person_address
WHERE person_address.person_id < 400000
GROUP BY address_id) temp)
and person_id < 400000
推荐阅读
- amazon-web-services - AWS DataSync 在不同账户中访问 S3
- python - PythonOperator内部的气流并行PythonOperator
- flutter - NoSuchMethodError---在 null 上调用了“包含”方法。尝试调用 contains(null)
- maven - 无法运行 Maven 包装器 2.2.1:无法在 Maven 发行版中找到 Maven 启动器 JAR
- java - 如何在 circleCI 中为基于 java-maven 的 appium 脚本编写 config.yml 文件?无法在 circleCI 中为基于 java-mave 的 appium 脚本编写 configyml
- c++ - wxPython 从 4.0.7 迁移到 4.1.0:事件处理时出现 ListCtrl 错误
- discord.py - 前 10 个硬币系统给出错误 discord.py
- asp.net-mvc - Simple Injector,服务和多个实例的依赖注入
- reactjs - 图表未在 chart.js 中显示
- operating-system - 如何为我的操作系统编写自己的视频驱动程序?