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
Barbara StreisandOriginal
2025-01-08 18:12:41152Durchsuche

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>

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>

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!

Stellungnahme:
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