[LeetCode] Delete Duplicate Emails 중복 메일박스 삭제

1466 단어
중국어 제목
Person 테이블의 모든 중복된 메일을 삭제하기 위해 SQL 조회를 작성합니다. 중복된 메일에는 Id의 가장 작은 메일만 저장됩니다.
+----+------------------+ | Id | Email | +----+------------------+ | 1 | [email protected] | | 2 | [email protected] | | 3 | [email protected]|+----+----------------+Id가 이 테이블의 메인 키입니다.예를 들어, 질의를 실행한 후 위의 Person 테이블에는 다음 행이 표시되어야 합니다.
+----+------------------+ | Id | Email | +----+------------------+ | 1 | [email protected] | | 2 | [email protected] | +----+------------------+
영문 제목
Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique emails based on its smallest Id.
+----+------------------+ | Id | Email | +----+------------------+ | 1 | [email protected] | | 2 | [email protected] | | 3 | [email protected] | +----+------------------+ Id is the primary key column for this table. For example, after running your query, the above Person table should have the following rows:
+----+------------------+ | Id | Email | +----+------------------+ | 1 | [email protected] | | 2 | [email protected] | +----+------------------+
답안을 참고하다
방법1:
DELETE FROM Person WHERE Id NOT IN
(SELECT Id FROM (SELECT MIN(Id) Id FROM Person GROUP BY Email) p);

방법2:
DELETE p2 FROM Person p1 JOIN Person p2 
ON p2.Email = p1.Email WHERE p2.Id > p1.Id;

방법 3:
DELETE p2 FROM Person p1, Person p2
WHERE p1.Email = p2.Email AND p2.Id > p1.Id;

좋은 웹페이지 즐겨찾기