sql >> Databáze >  >> RDS >> Mysql

Najděte řádky s duplicitními/podobnými hodnotami sloupců MySQL

Znovu jsem si přečetl vaši původní otázku a přišel jsem s následujícím řešením:

SELECT *
FROM   users
WHERE  id IN
       (SELECT id
       FROM    users t4
               INNER JOIN
                       (SELECT  soundex(fname) AS snd,
                                COUNT(*)       AS cnt
                       FROM     users          AS t5
                       GROUP BY snd
                       HAVING   cnt > 1
                       )
                       AS t6
               ON      soundex(t4.fname)=snd
       )
AND    id NOT IN
       (SELECT  MIN(t2.id) AS wanted
       FROM     users t2
                INNER JOIN
                         (SELECT  soundex(fname) AS snd,
                                  COUNT(*)       AS cnt
                         FROM     users          AS t1
                         GROUP BY snd
                         HAVING   cnt > 1
                         )
                         AS t3
                ON       soundex(t2.fname)=snd
       GROUP BY snd
       );

Je to trochu příliš komplikované, ale funguje to a poskytuje přesně to, co jste požadovali :)



  1. Jaký typ MySQL je nejvhodnější pro sloupec ceny?

  2. Jak provést přírůstkovou zálohu v Mysql

  3. Python Pandas - Použití to_sql k zápisu velkých datových rámců v blocích

  4. Jednoduchá, ale náročná aplikace spotřebovávající spoustu zdrojů. Jak optimalizovat?