Ich habe eine beliebig große MySQL-Tabelle, in der es doppelte Zeilen gibt. Um jedoch zu bestimmen, welche Zeilen dupliziert werden, muss ich die Daten aus zwei Spalten abgleichen. Ein modifiziertes Snippet der Tabelle ist unten.MySQL - Suchen von doppelten Daten aus zwei Spalten
mysql> select * from DATA_STATUS where METADATA_ID='6ac00785-abcd-3f4a-defg-12b8ed23abff';
+--------+------------+--------------------------------------+-------------+
| ID | STATUS | METADATA_ID | METADATA_FK |
+--------+------------+--------------------------------------+-------------+
| 1 | 3 | 6ac00785-abcd-3f4a-defg-12b8ed23abff | 1234 |
+--------+------------+--------------------------------------+-------------+
| 2 | 3 | 6ac00785-abcd-3f4a-defg-12b8ed23abff | 1234 |
+--------+------------+--------------------------------------+-------------+
| 3 | 0 | 6ac00785-abcd-3f4a-defg-12b8ed23abff | 1234 |
+--------+------------+--------------------------------------+-------------+
| 4 | 0 | 6ac00785-abcd-3f4a-defg-12b8ed23abff | 1234 |
+--------+------------+--------------------------------------+-------------+
| 5 | 1 | 6ac00785-abcd-3f4a-defg-12b8ed23abff | 1234 |
+--------+------------+--------------------------------------+-------------+
| 6 | 2 | 6ac00785-abcd-3f4a-defg-12b8ed23abff | 1234 |
+--------+------------+--------------------------------------+-------------+
Ich mag eine Auswahl auf der gesamte Tabelle zu tun, wo es mehr von den gleichen METADATA_ID
ist, wo die dupliziert METADATA_ID
Reihen ein STATUS
von 3. haben ich weiß, wie man eine Tabelle in einer Spalte für Duplikate abzufragen, aber Ich habe Mühe, herauszufinden, wie man auf Duplikate und andere Bedingungen abgleicht.
Aus den Beispieldaten, die Zeilen-IDs, die diese Bedingung erfüllen sind 1 und 2, aber nicht 3.
EDIT: Weitere Informationen zur Klärung und TL; DR Bedingungen
Das übergeordnete Kriterien für ein Duplikat ist STATUS=3
und METADATA_ID > 1
, das folgende Snippet zeigt die Zeilen, die dies erfüllen.
+--------+------------+--------------------------------------+-------------+
| ID | STATUS | METADATA_ID | METADATA_FK |
+--------+------------+--------------------------------------+-------------+
| 1 | 3 | 6ac00785-abcd-3f4a-defg-12b8ed23abff | 1234 |
+--------+------------+--------------------------------------+-------------+
| 2 | 3 | 6ac00785-abcd-3f4a-defg-12b8ed23abff | 1234 |
+--------+------------+--------------------------------------+-------------+
mag ich die Abfrage entweder zurück ziehen nur eine Zeile, die die ID
, STATUS
und METADATA_ID
enthält (METADATA_FK
ist optional), wenn ein Duplikat gefunden wird oder alle Instanzen der Vervielfältigung, entweder ist in Ordnung. Die Daten werden nicht doppelt gezählt, wenn STATUS
nicht 3 ist oder METADATA_ID
nur einmal in der Tabelle vorhanden ist.
Danke. Ich habe die vorherige Antwort und die aktualisierte Antwort auf der tatsächlichen Tabelle versucht. Die erste Abfrage funktionierte wie erwartet, die aktualisierte jedoch nicht. Es sieht so aus, als würde es nicht nach doppelten 'metadata_id' Werten suchen. – Donglecow
Der zweite ruft alle Zeilen ab, die Duplikate sind (Zeile 1 und Zeile 2), weil ich dachte, dass Sie gefragt haben. Vielleicht habe ich die Frage nicht bekommen, können Sie eine Beispielausgabe von der Eingabe bereitstellen, die Sie zur Verfügung gestellt haben? –
Sicher. Ich werde die Frage bearbeiten, um dies zu verdeutlichen, und weitere Zeilen hinzufügen, um weiter zu helfen. – Donglecow