Heim >Datenbank >MySQL-Tutorial >Wie wähle ich in einer Datenbanktabelle eindeutige Zeilen aus, die nach dem Mindestwert gruppiert sind?

Wie wähle ich in einer Datenbanktabelle eindeutige Zeilen aus, die nach dem Mindestwert gruppiert sind?

Susan Sarandon
Susan SarandonOriginal
2025-01-17 20:12:10248Durchsuche

How to Select Distinct Rows Grouped by Minimum Value in a Database Table?

Eindeutige Zeilen nach Mindestwert gruppiert auswählen

Im Bereich Datenbankoperationen stehen wir häufig vor der Aufgabe, Daten nach dem Mindestwert eines bestimmten Felds zu gruppieren und gleichzeitig eindeutige Zeilen auszuwählen. Nehmen wir an, Sie haben eine Tabelle mit mehreren Zeilen für jeden eindeutigen Bezeichner, zum Beispiel:

<code>| key_id | id | record_date | other_cols |
|---|---|---|---|
| 1 | 18 | 2011-04-03 | x |
| 2 | 18 | 2012-05-19 | y |
| 3 | 18 | 2012-08-09 | z |
| 4 | 19 | 2009-06-01 | a |
| 5 | 19 | 2011-04-03 | b |
| 6 | 19 | 2011-10-25 | c |
| 7 | 19 | 2012-08-09 | d |</code>

Das Ziel besteht darin, von jeder eindeutigen ID eine Zeile abzurufen, die die Zeile mit dem kleinsten Datensatzdatum darstellt.

Ein gängiger Ansatz besteht darin, eine Unterabfrage zu verwenden, um das minimale Aufnahmedatum für jede ID zu ermitteln und es dann wieder mit der Originaltabelle zu verknüpfen:

<code>SELECT *
FROM t
WHERE record_date = (SELECT MIN(record_date) FROM t WHERE id = t.id)</code>

Diese Methode kann jedoch keine doppelten Einträge für das Mindesteintragsdatum mit derselben ID verarbeiten, was zu mehrzeiligen Ergebnissen führt.

Um dieses Problem zu lösen, benötigen wir eine Lösung, die eindeutige Zeilen gewährleistet. Ein solcher Ansatz besteht darin, einen inneren Join und eine abgeleitete Tabelle zu verwenden, die das minimale Aufnahmedatum für jede ID berechnet:

<code>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>

Der innere Join garantiert, dass nur die Zeilen mit dem minimalen Datensatzdatum für jede ID ausgewählt werden, wodurch effektiv eine Tabelle mit eindeutigen Zeilen erstellt wird, die nach Mindestwerten gruppiert sind.

Das obige ist der detaillierte Inhalt vonWie wähle ich in einer Datenbanktabelle eindeutige Zeilen aus, die nach dem Mindestwert gruppiert sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn