sql >> Database >  >> RDS >> Mysql

Query om de duplicaten tussen de naam en het nummer in de tabel te vinden

Vraag bijgewerkt

"Krijg duplicaat op zowel nummer als naam" ... "naam en nummer als verschillende kolom"
Rijen kunnen hier twee keer worden geteld!

SELECT lower(name), NULL AS number, count(*) AS ct
FROM   tbl
GROUP  BY lower(name)
HAVING count(*) > 1

UNION  ALL
SELECT NULL, number, count(*) AS ct
FROM   tbl
GROUP  BY number
HAVING count(*) > 1;

-> sqlfiddle

Oorspronkelijke vraag

Het probleem is dat de zoekopdracht groepeert op

GROUP  BY lower(name), number

Omdat rij 3 en 4 een verschillende . hebben number , ze zijn niet hetzelfde voor deze zoekopdracht.

Als je verschillende nummers voor deze zoekopdracht wilt negeren, probeer dan iets als:

SELECT lower(name)
     , count(*) AS ct
FROM   tbl
GROUP  BY lower(name)
HAVING count(*) > 1;


  1. Duplicaat uit een tabel verwijderen

  2. Selecteer * uit tabel1 die niet bestaat in tabel2 met voorwaardelijk

  3. bulk lijstwaarden invoegen met SQLAlchemy Core

  4. convert_tz retourneert null