Ich habe folgende SQL zum Inspizieren doppelte Zeilen in einer Tabelle, die die folgenden Spalten: id
, case_id
, raw_name
, initials
, name
, judge_id
, magistrate_id
und score
.Count Anzahl der doppelten Zeilen in einer Tabelle
SELECT MIN(id), case_id, initials, raw_name, count(*)
FROM my_table
GROUP BY case_id, raw_name, initials, name, judge_id, magistrate_id
HAVING count(*) > 1;
(Eine Reihe Duplikat wird in Betracht gezogen, wenn sie die gleichen Werte in den case_id
enthält raw_name
, initials
, name
, judge_id
und magistrate_id
Spalten.)
Wie kann die Gesamtzahl der doppelten Zeilen erhalten, müssen gelöscht werden (wobei für jede Duplikate noch 1 Zeile übrig bleibt)?
Sind Sie sicher, dass Sie alle Spalten in GROUP BY benötigen? Der übliche Weg besteht darin, dieselben Spalten wie die ausgewählten (aber keine Argumente zum Setzen von Funktionen) aufzulisten, d. H. Case_id, initialen und rohen_name. – jarlh
Die Spalten in der GROUP BY sind die, die übereinstimmen sollten, um als Duplikate zu gelten, zumindest ist das mein Verständnis. Die Spalten im SELECT sind nur die, die ich mir ansehen möchte. – bard
Ich sage nicht, du liegst falsch, wenn du weißt, was du tust. (Es ist jedoch ein häufiger Fehler, zu wenige oder zu viele Spalten in der group by-Klausel aufzulisten.) – jarlh