Heim >Datenbank >MySQL-Tutorial >Wie kann ich die drei aktuellsten eindeutigen Datensatz-IDs basierend auf einer gemeinsam genutzten Spalte finden?
Welche eindeutigen Datensatz-IDs sind die aktuellsten?
In einer bestimmten Datenbanktabelle sind bestimmte Datensätze durch eine gemeinsame Spalte miteinander verbunden. Das Ziel besteht darin, die aktuellsten drei eindeutigen Datensatz-IDs zu identifizieren, die diesem gemeinsamen Spaltenwert zugeordnet sind.
Um dies zu erreichen, betrachten Sie die folgende Beispieltabelle:
id | time | text | otheridentifier |
---|---|---|---|
1 | 6 | apple | 4 |
2 | 7 | orange | 4 |
3 | 8 | banana | 3 |
4 | 9 | pear | 3 |
5 | 10 | grape | 2 |
Zunächst könnte ein intuitiver Ansatz hilfreich sein B. nach der Otheridentifier-Spalte gruppieren und anschließend nach absteigender Zeit sortieren. Diese Methode würde jedoch nicht zum gewünschten Ergebnis führen:
SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3;
Diese Abfrage würde fälschlicherweise Datensätze mit den IDs 3 und 1 anstelle der korrekten IDs 4 und 2 einschließen. Der Grund für diese Diskrepanz liegt in der Abfrageausführung Reihenfolge: Die Gruppierung hat Vorrang vor der Reihenfolge.
Um die beabsichtigten Ergebnisse zu erzielen, ist eine komplexere Lösung erforderlich 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;
Diese modifizierte Abfrage verwendet eine Unterabfrage, um die einzelne ID mit dem neuesten Zeitwert für jeden einzelnen anderen Identifikatorwert auszuwählen. Diese optimierte Abfrage gewährleistet die gewünschte Ausgabe der eindeutigen Datensatzkennungen 5, 4 und 2.
Das obige ist der detaillierte Inhalt vonWie kann ich die drei aktuellsten eindeutigen Datensatz-IDs basierend auf einer gemeinsam genutzten Spalte finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!