sql >> Databasteknik >  >> RDS >> Mysql

Hitta senaste dubbletter av ID med MySQL

Tja, du svarar typ på din fråga. Du verkar vilja ha max(id) :

SELECT email, COUNT(email) AS occurences, max(id)
FROM wineries
GROUP BY email
HAVING (COUNT(email) > 1);

Du kan ta bort de andra med hjälp av uttalandet. Ta bort med join har en knepig syntax där du måste lista tabellnamnet först och sedan ange from klausul med join:

delete wineries
            from wineries join
            (select email, max(id) as maxid
             from wineries
             group by email
             having count(*) > 1
            ) we
            on we.email = wineries.email and
               wineries.id < we.maxid;

Eller att skriva detta som en exists klausul:

delete from wineries
    where exists (select 1
                  from (select email, max(id) as maxid
                        from wineries
                        group by email
                       ) we
                  where we.email = wineries.email and wineries.id < we.maxid
                 )


  1. Doctrine 2 mysql FIELD funktion i ordning efter

  2. Django modellerar en främmande nyckel till många tabeller

  3. Vad är nytt i MariaDB MaxScale 2.4

  4. Haversine och Laravel