945 Stimmen

Suche nach doppelten Werten in MySQL

Ich habe eine Tabelle mit einer varchar-Spalte und möchte alle Datensätze finden, die doppelte Werte in dieser Spalte haben. Was ist die beste Abfrage, die ich verwenden kann, um die Duplikate zu finden?

18voto

TechTravelThink Punkte 2894

Angenommen, Ihre Tabelle heißt TableABC und die gewünschte Spalte ist Col und der Primärschlüssel zu T1 ist Key.

SELECT a.Key, b.Key, a.Col 
FROM TableABC a, TableABC b
WHERE a.Col = b.Col 
AND a.Key <> b.Key

Der Vorteil dieses Ansatzes gegenüber der obigen Antwort ist, dass er den Schlüssel liefert.

16voto

AbsoluteƵERØ Punkte 7645

Unter @maxyfc's Antwort weiter, ich musste finden alle der Zeilen, die mit den doppelten Werten zurückgegeben wurden, damit ich sie in MySQL-Workbench :

SELECT * FROM table
   WHERE field IN (
     SELECT field FROM table GROUP BY field HAVING count(*) > 1
   ) ORDER BY field

12voto

strustam Punkte 121
SELECT * 
FROM `dps` 
WHERE pid IN (SELECT pid FROM `dps` GROUP BY pid HAVING COUNT(pid)>1)

11voto

user5599549 Punkte 119

Um herauszufinden, wie viele Datensätze Duplikate in der Spalte "Name" in "Mitarbeiter" sind, ist die folgende Abfrage hilfreich;

Select name from employee group by name having count(*)>1;

11voto

Jonathan Punkte 267

Meine endgültige Abfrage enthielt einige der hier gegebenen Antworten, die hilfreich waren - die Kombination von group by, count & GROUP_CONCAT.

SELECT GROUP_CONCAT(id), `magento_simple`, COUNT(*) c 
FROM product_variant 
GROUP BY `magento_simple` HAVING c > 1;

Dies liefert die Kennung der beiden Beispiele (durch Komma getrennt), den benötigten Strichcode und die Anzahl der Duplikate.

Ändern Sie Tabelle und Spalten entsprechend.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X