Heim >Datenbank >MySQL-Tutorial >Wie kann man effizient den frühesten Datensatz für jede eindeutige ID in einer Tabelle mit doppelten Datumsangaben finden?
Extrahieren des ersten Datensatzes für jede eindeutige ID, Umgang mit doppelten Daten
Stellen Sie sich eine Tabelle (nennen wir sie MyTable
) mit den Spalten key_id
, id
, record_date
und anderen Spalten (other_cols
) vor. Das Ziel besteht darin, für jedes eindeutige record_date
die Zeile zu bestimmen, die das früheste id
enthält.
Standardmethoden gehen häufig von eindeutigen record_date
Werten aus, aber unsere Daten können Duplikate enthalten. Komplexe Abfragen mit Unterabfragen und Joins können zu unnötigen Ergebnissen führen.
Ein optimierterer Ansatz verwendet eine Unterabfrage:
<code class="language-sql">SELECT mt.* FROM MyTable mt INNER JOIN ( SELECT id, MIN(record_date) AS MinDate FROM MyTable GROUP BY id ) t ON mt.id = t.id AND mt.record_date = t.MinDate;</code>
Die innere Unterabfrage findet effizient das früheste record_date
(MinDate
) für jedes id
, indem sie die Daten gruppiert. Die äußere Abfrage verknüpft dieses Ergebnis dann wieder mit der Originaltabelle (MyTable
) und wählt nur die Zeilen aus, in denen record_date
mit dem in der Unterabfrage gefundenen Mindestdatum übereinstimmt. Dadurch wird effektiv der früheste Datensatz für jedes eindeutige id
abgerufen, doppelte Daten werden ordnungsgemäß behandelt und redundante Daten vermieden.
Das obige ist der detaillierte Inhalt vonWie kann man effizient den frühesten Datensatz für jede eindeutige ID in einer Tabelle mit doppelten Datumsangaben finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!