摘要:
考察字段值不唯一情况下的自连接(全排列映射)。
题目
自连接
通过 Email
字段自连接,生成一张临时表。在这张表中,因为 Email
字段值存在重复,所以会存在交叉映射记录。
如对于表 Person
:
id | |
---|---|
1 | [email protected] |
2 | [email protected] |
3 | [email protected] |
建立自连接:select a.id, a.Email, b.id, b.Email from Person a inner join Person b on a.email = b.email;
后形成临时表:
id | id(1) | Email(1) | |
---|---|---|---|
1 | [email protected] | 1 | [email protected] |
3 | [email protected] | 1 | [email protected] |
2 | [email protected] | 2 | [email protected] |
1 | [email protected] | 3 | [email protected] |
3 | [email protected] | 3 | [email protected] |
由上可知,显然只有 Email = [email protected]
的情况,两张表映射唯一。
而对于 Email = [email protected]
的情况,存在 $4$ 种全排列映射情况。
为了删除重复记录中 id
最大的记录,可以限定条件:a.id > b.id
1 | delete a from Person as a |
原题链接: LeetCode 196. 删除重复的电子邮箱