MYSQL ORDER BY CASE Problem: Zeitstempel für die Bestellung kombinieren
Im vorgestellten Szenario haben wir eine Tabelle mit vier Zeilen, wobei jede Zeile enthält zwei IDs und zwei Zeitstempel. Die Aufgabe besteht darin, alle vier Zeilen abzurufen und sie basierend auf Zeitstempeln auf eine bestimmte Weise zu ordnen.
Das Ziel besteht darin, die Spalte timestamp_one für die Sortierung zu priorisieren, wenn id_one mit 27 übereinstimmt, und die Spalte timestamp_two zu priorisieren, wenn id_two mit 27 übereinstimmt. Die erwartete Ausgabe besteht darin, dass die Zeilen so angeordnet sind, als ob die beiden Zeitstempelspalten eine wären.
Um dies zu erreichen Dazu können wir die vorhandene Anweisung wie folgt ändern:
SELECT id_one, id_two, timestamp_one, timestamp_two FROM tablename WHERE id_one = 27 OR id_two = 27 ORDER BY CASE WHEN id_one=27 THEN timestamp_one WHEN id_two=27 THEN timestamp_two END DESC
In dieser aktualisierten Anweisung priorisieren wir die Sortierung nach timestamp_one, wenn id_one 27 ist, und nach timestamp_two, wenn id_two 27 ist. Die CASE-Anweisung stellt sicher, dass die richtige Zeitstempelspalte vorliegt wird für jede Zeile verwendet.
Die resultierende Ausgabe wird wie folgt sortiert folgt:
------------------------------------------------------------------- | id_one | id_two | timestamp_one | timestamp_two | ------------------------------------------------------------------- | 27 | 35 | 9:30 | NULL | ------------------------------------------------------------------- | 35 | 27 | NULL | 9:33 | ------------------------------------------------------------------- | 27 | 35 | 9:34 | NULL | ------------------------------------------------------------------- | 35 | 27 | NULL | 9:35 | -------------------------------------------------------------------
Dies erfüllt die Anforderung, die Zeilen so anzuordnen, als ob die beiden Zeitstempelspalten eins wären, wobei timestamp_one für Zeilen mit id_one von 27 und timestamp_two für Zeilen mit id_two von 27 priorisiert werden.
Das obige ist der detaillierte Inhalt vonWie ordne ich Zeilen nach Zeitstempeln, priorisiert nach bestimmten IDs, mithilfe der CASE-Anweisung in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!