Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie ordne ich Zeilen nach Zeitstempeln, priorisiert nach bestimmten IDs, mithilfe der CASE-Anweisung in MySQL?

Barbara Streisand
Freigeben: 2024-11-23 06:00:18
Original
203 Leute haben es durchsucht

How to Order Rows by Timestamps Prioritized by Specific IDs using CASE Statement in MySQL?

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
Nach dem Login kopieren

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       |
-------------------------------------------------------------------
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage