Heim > Datenbank > MySQL-Tutorial > Wie ordne ich Datenbankeinträge nach mehreren Werten in einer bestimmten Reihenfolge?

Wie ordne ich Datenbankeinträge nach mehreren Werten in einer bestimmten Reihenfolge?

Barbara Streisand
Freigeben: 2025-01-08 18:12:41
Original
107 Leute haben es durchsucht

How to Order Database Records by Multiple Values in a Specific Sequence?

Mehrwertige Sortierung von Datenbankeinträgen in einer bestimmten Reihenfolge

Angenommen, Sie haben eine Tabelle mit einem indizierten Schlüssel und einem nicht indizierten Feld x_field. Sie müssen alle Datensätze mit einem bestimmten Wert finden und zurückgeben und die Ergebnisse basierend auf mehreren Werten in einer bestimmten Reihenfolge sortieren.

Zum Beispiel, wenn Sie die folgende Tabelle haben:

id x_field
123 a
124 a
125 a
126 b
127 f
128 b
129 a
130 x
131 x
132 b
133 p
134 p
135 i

und Sie möchten die Ergebnisse in der folgenden Reihenfolge sortieren, wobei die Reihenfolge x_field = 'f', 'p', 'i', 'a' ist:

id x_field
127 f
133 p
134 p
135 i
123 a
124 a
125 a
129 a

Sie haben zunächst versucht, die folgende Abfrage zu verwenden:

<code class="language-sql">SELECT *
FROM table
WHERE id NOT IN (126)
ORDER BY x_field 'f', 'p', 'i', 'a'</code>
Nach dem Login kopieren

Diese Abfrage liefert jedoch keine Ergebnisse.

Die Möglichkeit, dieses Problem zu lösen, besteht darin, die CASE-Anweisung zu verwenden, um jedem x_field-Wert entsprechend der gewünschten Reihenfolge einen numerischen Wert zuzuweisen:

<code class="language-sql">...
WHERE
   x_field IN ('f', 'p', 'i', 'a') ...
ORDER BY
   CASE x_field
      WHEN 'f' THEN 1
      WHEN 'p' THEN 2
      WHEN 'i' THEN 3
      WHEN 'a' THEN 4
      ELSE 5 -- 对不在 IN 子句中的值(例如:x_field = 'b')的回退值
   END, id</code>
Nach dem Login kopieren

Diese Abfrage weist dem x_field-Wert gleich „f“ den Wert 1, dem Wert gleich „p“ den Wert 2, dem Wert gleich „i“ den Wert 3 und dem Wert gleich „i“ den Wert 4 zu Entspricht dem Wert von „a“. Für Werte, die nicht in der IN-Klausel enthalten sind (z. B. „b“), wird ein Fallback-Wert von 5 zugewiesen. Die Ergebnisse werden dann basierend auf diesem numerischen Wert und dem Feld id in aufsteigender Reihenfolge sortiert.

Dieser Ansatz stellt sicher, dass die Ergebnisse in der gewünschten Reihenfolge sortiert werden, auch wenn x_field die Werte nicht in absteigender/aufsteigender Reihenfolge vorliegen.

Das obige ist der detaillierte Inhalt vonWie ordne ich Datenbankeinträge nach mehreren Werten in einer bestimmten Reihenfolge?. 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