Heim >Datenbank >MySQL-Tutorial >Wie repliziere ich die ORDER BY FIELD()-Funktion von MySQL in PostgreSQL?

Wie repliziere ich die ORDER BY FIELD()-Funktion von MySQL in PostgreSQL?

Barbara Streisand
Barbara StreisandOriginal
2024-12-07 10:02:12594Durchsuche

How to Replicate MySQL's ORDER BY FIELD() Function in PostgreSQL?

Simulation von MySQLs ORDER BY FIELD() in PostgreSQL

Beim Übergang von MySQL zu PostgreSQL stoßen Entwickler möglicherweise auf das Fehlen der ORDER BY FIELD()-Funktion in PostgreSQL. Diese Funktion bietet eine bequeme Möglichkeit, Datensätze basierend auf einer angegebenen Werteliste zu sortieren.

Problemstellung:

Eine Rails-Anwendung verwendet SQL, das die folgende Sortierklausel enthält:

SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC

Diese Klausel zielt darauf ab, die Datensätze basierend auf der angegebenen Liste von Währungscodes zu sortieren, mit zusätzlicher Sortierung nach dem Namensfeld. PostgreSQL unterstützt diese Syntax jedoch nicht.

Lösung:

Um das Verhalten von MySQLs ORDER BY FIELD() in PostgreSQL zu simulieren, können Sie eine Kombination davon verwenden CASE-Anweisung und die ORDER BY-Klausel. So geht's:

SELECT * FROM currency_codes
ORDER BY
CASE
  WHEN code='USD' THEN 1
  WHEN code='CAD' THEN 2
  WHEN code='AUD' THEN 3
  WHEN code='BBD' THEN 4
  WHEN code='EUR' THEN 5
  WHEN code='GBP' THEN 6
  ELSE 7
END,
name;

Bei diesem Ansatz:

  • Die CASE-Anweisung wertet das Codefeld aus und weist jedem Währungscode, der in der FIELD()-Funktion in MySQL aufgeführt ist, eine entsprechende Priorität zu .
  • Die ORDER BY-Klausel verwendet diese Priorität, um zuerst die Datensätze zu sortieren, gefolgt von der Sortierung basierend auf dem Namen Feld.

Diese Methode bietet eine praktische Möglichkeit, das Verhalten von MySQLs ORDER BY FIELD() in PostgreSQL zu simulieren und stellt sicher, dass Datensätze wie gewünscht sortiert werden.

Das obige ist der detaillierte Inhalt vonWie repliziere ich die ORDER BY FIELD()-Funktion von MySQL in PostgreSQL?. 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