Heim >Datenbank >MySQL-Tutorial >Wie kann ich SQL-Ergebnisse so anordnen, dass sie mit der Reihenfolge der Werte in einer IN-Liste übereinstimmen?

Wie kann ich SQL-Ergebnisse so anordnen, dass sie mit der Reihenfolge der Werte in einer IN-Liste übereinstimmen?

Susan Sarandon
Susan SarandonOriginal
2025-01-19 11:11:10384Durchsuche

How Can I Order SQL Results to Match the Order of Values in an IN List?

Ordnen Sie die Ergebnisse in der Reihenfolge der IN-Liste

In SQL besteht ein häufiges Szenario darin, den IN-Operator zu verwenden, um Daten basierend auf einem angegebenen Wertesatz abzurufen. In diesem Fall möchten Sie die Ergebnisse möglicherweise in der Reihenfolge in der IN-Liste anordnen.

In PostgreSQL-Versionen vor 8.4 bestand eine Möglichkeit, diese Sortierung zu erreichen, darin, eine korrelierte Unterabfrage zu verwenden. Für 8.2 und höher ist jedoch ein effizienterer Ansatz verfügbar:

VALUES-Funktion

PostgreSQL hat in Version 8.2 die VALUES-Funktion eingeführt, die die Erstellung von In-Memory-Tabellen ermöglicht. Mit dieser Funktion kann eine temporäre Tabelle erstellt werden, die die gewünschte Reihenfolge der Werte enthält:

<code class="language-sql">select c.*
from comments c
join (
  values
    (1,1),
    (3,2),
    (2,3),
    (4,4)
) as x (id, ordering) on c.id = x.id
order by x.ordering</code>

In dieser Abfrage:

  • Die VALUES-Funktion erstellt eine temporäre Tabelle mit dem Namen „x“, die zwei Spalten enthält: „id“ und „ordering“.
  • Die Spalte „id“ enthält den in der IN-Klausel angegebenen Wert.
  • Die Spalte „Reihenfolge“ weist jedem Wert eine numerische Reihenfolge zu und sorgt so für die gewünschte Anordnung der Ergebnisse.
  • Die temporäre Tabelle „x“ wird mit der Tabelle „Kommentare“ basierend auf der gemeinsamen Spalte „id“ verknüpft.
  • Abschließend werden die Ergebnisse nach der Spalte „Reihenfolge“ sortiert, wodurch die gewünschte Reihenfolge der Kommentare generiert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich SQL-Ergebnisse so anordnen, dass sie mit der Reihenfolge der Werte in einer IN-Liste übereinstimmen?. 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