每日一题之删除重复的电子邮件
删除重复的电子邮件
编写一个 SQL 查询,来删除 Person
表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
1 | +----+------------------+ |
例如,在运行你的查询语句之后,上面的 Person
表应返回以下几行:
1 | +----+------------------+ |
解题思路
- 找到邮箱重复且id不是最小的记录
- 进行查询排除或者删除原表记录
代码
查询
1 | SELECT |
原表中删除记录
错误代码:
DELETE FROM person
WHERE id IN(
SELECT p1.Id
FROM person p1,person p2
WHERE
p1.Id>p2.Id
AND
p1.Email=p2.Email)
错误提示:
You can't specify target table 'person' for update in FROM clause
翻译:你不能在FROM子句中引用person
表(也就是原表)
正确代码:
1 | DELETE p1 FROM person p1,person p2 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 YD Blog!