Heim >Datenbank >MySQL-Tutorial >Wie wähle ich die drei aktuellsten Datensätze mit eindeutigen Werten in einer anderen Spalte aus?

Wie wähle ich die drei aktuellsten Datensätze mit eindeutigen Werten in einer anderen Spalte aus?

Barbara Streisand
Barbara StreisandOriginal
2024-11-27 03:47:09213Durchsuche

How to Select the 3 Most Recent Records with Unique Values in Another Column?

Auswahl der neuesten Datensätze mit eindeutigen Werten: Ein überarbeiteter Ansatz

Die gestellte Frage bezieht sich auf das Abrufen der drei neuesten Datensätze aus einer Tabelle in einer Zeitspalte, mit der zusätzlichen Bedingung, dass diese Datensätze unterschiedliche Werte in einer anderen Spalte haben müssen, die als otheridentifier bezeichnet wird. Um dies zu erreichen, ist eine vielschichtige SQL-Abfrage erforderlich.

Mängel der ursprünglichen Abfrage

Die ursprünglich versuchte Abfrage stieß auf Einschränkungen aufgrund der inhärenten Reihenfolge der Operationen in SQL. Die Gruppierung erfolgt vor der Bestellung, was dazu führte, dass falsche Daten zurückgegeben wurden.

Die überarbeitete Abfrage

Um dieses Problem zu beheben, ist eine komplexere Abfrage erforderlich:

SELECT *
FROM `table`
WHERE `id` = (
    SELECT `id`
    FROM `table` as `alt`
    WHERE `alt`.`otheridentifier` = `table`.`otheridentifier`
    ORDER BY `time` DESC
    LIMIT 1
)
ORDER BY `time` DESC
LIMIT 3

Erklärung:

  • Die Unterabfrage ruft die ab ID des aktuellsten Datensatzes für jeden eindeutigen otheridentifier-Wert. Diese Unterabfrage stellt die Eindeutigkeit sicher.
  • Die Hauptabfrage wählt dann die drei obersten Datensätze aus der Tabelle basierend auf der Zeitspalte aus und stellt sicher, dass sie eindeutige andere Bezeichnerwerte haben.
  • Abschließend werden diese Datensätze nach sortiert ihre Zeitwerte in absteigender Reihenfolge und beschränkt auf die drei aktuellsten.

Das obige ist der detaillierte Inhalt vonWie wähle ich die drei aktuellsten Datensätze mit eindeutigen Werten in einer anderen Spalte aus?. 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