Write a SQL query to delete all duplicate e-mail entries in a table named Person
, keeping 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 has the following rows:
+----+------------------+| Id | Email |+----+------------------+| 1 | [Email protected] | | 2 | [email protected] | +----+------------------+
Ideas:
(1) First say inner join (equivalent to join), and his derivative left/right join. Their essence is to add additional conditions on the basis of the Cartesian product.
(2) then the delete format:
Delete from table where:
Delete from p1using person P1 inner join person p2on p1. Id > P2. Id and P1. Email = P2. Email
Sql-delete Duplicate Emails