Heim > Datenbank > MySQL-Tutorial > Wie sortiere ich Zeilen basierend auf einem bedingten Zeitstempel in MySQL?

Wie sortiere ich Zeilen basierend auf einem bedingten Zeitstempel in MySQL?

Linda Hamilton
Freigeben: 2024-11-13 04:46:01
Original
448 Leute haben es durchsucht

How to Sort Rows Based on a Conditional Timestamp in MySQL?

MySQL ORDER BY CASE-Sortierproblem

In MySQL können Sie mit der ORDER BY-Klausel Abfrageergebnisse basierend auf angegebenen Spalten sortieren. Beim Sortieren mehrerer Spalten, die von einer bestimmten Bedingung abhängen, können jedoch Schwierigkeiten auftreten.

Stellen Sie sich das folgende Szenario vor:

Sie haben eine Tabelle mit zwei Spalten, timestamp_one und timestamp_two. Sie müssen alle Zeilen abrufen, in denen entweder id_one oder id_two gleich 27 ist. Darüber hinaus möchten Sie die Ergebnisse basierend auf timestamp_one oder timestamp_two sortieren, je nachdem, ob id_one oder id_two 27 ist.

Während die folgende Abfrage korrekt ist ruft die erforderlichen Zeilen ab:

SELECT * FROM tablename 
WHERE id_one=27 OR id_two=27 
ORDER BY 
  CASE WHEN id_one=27 THEN timestamp_one END DESC, 
  CASE WHEN id_two=27 THEN timestamp_two END DESC
Nach dem Login kopieren

Es sortiert die Zeilen nach jeder Spalte einzeln, anstatt sie zum Sortieren zu einem einzigen Zeitstempel zusammenzufassen.

Um dieses Problem zu beheben, können Sie Folgendes verwenden modifizierte Abfrage:

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 modifizierten Abfrage vereinfachen wir die ORDER BY-Klausel, indem wir einen einzelnen CASE-Ausdruck verwenden, um die Sortierreihenfolge zu bestimmen. Dadurch können wir die Zeilen basierend auf einem kombinierten Zeitstempel sortieren, der je nach Wert von id_one und id_two dynamisch die entsprechende Spalte (timestamp_one oder timestamp_two) auswählt.

Das obige ist der detaillierte Inhalt vonWie sortiere ich Zeilen basierend auf einem bedingten Zeitstempel 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