Mysql 为什么要使用子查询来获取原始表?
我遇到了一个来自Leetcode的问题 一种方法如下: 从某人处删除 Id不在SELECT MINp中。Id来自SELECT*FROM Person p 通过电子邮件分组Mysql 为什么要使用子查询来获取原始表?,mysql,sql,subquery,Mysql,Sql,Subquery,我遇到了一个来自Leetcode的问题 一种方法如下: 从某人处删除 Id不在SELECT MINp中。Id来自SELECT*FROM Person p 通过电子邮件分组 我想知道为什么它需要表本身的子查询从SELECT*FROM Person中选择MINp.Id,而不是从Person p中选择MINp.Id这是MySQL中的一个漏洞。MySQL不允许DELETE或UPDATE直接引用正在修改的表。额外的子查询具体化了表并允许代码工作 很多人会用JOIN来写这个: 这是MySQL中的黑客攻击。M
我想知道为什么它需要表本身的子查询从SELECT*FROM Person中选择MINp.Id,而不是从Person p中选择MINp.Id这是MySQL中的一个漏洞。MySQL不允许DELETE或UPDATE直接引用正在修改的表。额外的子查询具体化了表并允许代码工作 很多人会用JOIN来写这个:
这是MySQL中的黑客攻击。MySQL不允许DELETE或UPDATE直接引用正在修改的表。额外的子查询具体化了表并允许代码工作 很多人会用JOIN来写这个:
DELETE p
FROM Person p JOIN
(SELECT p2.email, MIN(p2.ID) as min_id
FROM person p2
GROUP BY p2.email
) pp
ON pp.email = p.email
WHERE p.id > pp.id;