题182. 查找重复的电子邮箱:
思路:先GROUP BY分组,再HAVING过滤分组
SELECT Email FROM Person GROUP BY Email HAVING COUNT(*)>1
如果采用以下代码:
SELECT p1.Email FROM Person p1,Person p2 WHERE p1.Id
代码执行:将表p1的数据取出,遍历表p2的数据。
假设输入数据为:
输出结果为:p1保存了id为1,2的数据(除去最大值的数据),p2保存了id为2,3的数据(除去最小值的数据)
题196. 删除重复的电子邮箱:
思路:参照上面的思路,p2保留除去最小值id的重复数据,删除p2,即保留了id为最小值的重复数据
DELETE p2 FROM Person p1,Person p2
WHERE p1.Email=p2.Email AND p1.id