mysql - 您不能在 FROM 子句中指定目标表“人”进行更新
问题描述
我需要删除重复的电子邮件。
在 SQLite 中,这是正确的 sql 查询:
delete from person
where id in (select id from person
group by email
having count(email) > 1)
但是当我尝试在 MySQL 上使用相同的查询时,我得到了错误:
You can't specify target table 'person' for update in FROM clause
PS我也尝试通过内部连接,但它没有帮助。
解决方案
您需要这样的表的自联接:
delete p1
from person p1 inner join person p2
on p2.email = p1.email and p2.id < p1.id
或者:
delete p
from person p
inner join (
select email, min(id) id
from person
group by email
) t on t.email = p.email and t.id < p.id
推荐阅读
- android - Android导航抽屉项目没有响应
- typescript - 我可以从异步等待函数返回我自己的 PromiseLike 类型吗?
- javascript - Angular 下拉菜单显示多个内容
- mysql - 我在连接数据库时遇到问题
- android - 用于教育通知的 Webview Flutter
- workflow - What do I do when the Eclipse CDT indexer gets stuck?
- css - Sap-UI5: Adding a style class dynamically doesn't work
- python - Discord.py always sends the same wrong response
- ios - UIRefreshControl 不能被禁用
- c - File's pyshical memory location or variable?