题目来源:
leetcode题目,网址:196. 删除重复的电子邮箱 - 力扣(LeetCode)
解题思路:
先让Person表与自身交叉连接,再从中选出email相同并且 id 较大的id号,最后删除在其中的 id 即可。
解题代码:
# Please write a DELETE statement and DO NOT write a SELECT statement.
# Write your MySQL query statement below
delete from person where id in(
select t.id from (
select distinct a.id
from Person a cross join Person b
where a.email=b.email and a.id>b.id) as t)
总结:
第一次提交的时候,sql语句没有select t.id from()as t,报错,delete 语句中直接嵌套select语句时,不能使用同一张表;第二次提交时,sql语句没有 as t, 报错,每一个派生出来的表都必须有一个自己的别名。但是我不知道什么时候会产生新表(as t 时?)。
官方题解直接delete p1 from Person p1,Person p2......更为简洁。