sql >> Database >  >> RDS >> Mysql

Vind de meest recente dubbele ID met MySQL

Nou, je geeft een beetje antwoord op je vraag. Je lijkt max(id) . te willen :

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

U kunt de anderen verwijderen met behulp van de verklaring. Verwijderen met join heeft een lastige syntaxis waarbij je eerst de tabelnaam moet vermelden en vervolgens de from . moet specificeren clausule met de 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;

Of schrijf dit als een exists clausule:

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. Stap voor stap instructies voor de installatie van Oracle Virtual Box

  2. Hoe R MySQL verbinden of hoe RMySQL-pakket installeren?

  3. Android - probeer een reeds gesloten object opnieuw te openen:SQLiteQuery met loaderManager

  4. Getallen opmaken met een komma in SQLite