Heim > Datenbank > MySQL-Tutorial > Wie simuliere ich MySQLs ORDER BY FIELD() in PostgreSQL?

Wie simuliere ich MySQLs ORDER BY FIELD() in PostgreSQL?

DDD
Freigeben: 2024-12-31 08:04:10
Original
317 Leute haben es durchsucht

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

Simulieren von MySQLs ORDER BY FIELD() in PostgreSQL

Als MySQL-Benutzer, der auf PostgreSQL umsteigt, stoßen Sie möglicherweise auf die Einschränkung, die ORDER BY Die FIELD()-Syntax wird in der letztgenannten Datenbank nicht unterstützt. Dies wirft die Frage auf, wie man sein Verhalten in PostgreSQL emulieren kann.

Problem:

MySQL ermöglicht es Ihnen, eine benutzerdefinierte Reihenfolge mithilfe der ORDER BY FIELD()-Klausel zu definieren. Es nimmt einen Wert und eine Reihe erwarteter Werte an und die Abfrageergebnisse werden in der Reihenfolge der bereitgestellten Werte sortiert.

Zum Beispiel:

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

Diese Abfrage würde Zeilen mit priorisieren Codes „GBP“, „EUR“, „BBD“, „AUD“, „CAD“ und „USD“ in dieser Reihenfolge, während die Ergebnisse weiter in aufsteigender Reihenfolge nach „Name“ sortiert werden. Spalte.

Lösung:

In PostgreSQL können Sie eine ähnliche Funktionalität erreichen, indem Sie eine Kombination aus CASE-Anweisungen und der Reihenfolge nach den resultierenden numerischen Werten verwenden.

So können Sie das Verhalten der ORDER BY FIELD()-Klausel simulieren:

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;
Nach dem Login kopieren

Hier Abfrage:

  • Die CASE-Anweisung weist jedem angegebenen Wert der Spalte „Code“ einen numerischen Wert (1-6) zu.
  • Zeilen mit den angegebenen Werten werden in numerischer Reihenfolge sortiert durch die zugewiesenen Werte.
  • Wenn der Wert der Spalte „Code“ mit keinem der angegebenen Werte übereinstimmt, erhält er den Standardwert 7.
  • Die Ergebnisse werden weiter in aufsteigender Reihenfolge nach der Spalte „Name“ sortiert.

Mit dieser Technik können Sie Zeilen basierend auf einer vordefinierten Reihenfolge priorisieren und so eine gute Annäherung an diese Reihenfolge erzielen die Funktionalität der MySQL ORDER BY FIELD()-Klausel.

Das obige ist der detaillierte Inhalt vonWie simuliere ich MySQLs ORDER BY FIELD() in PostgreSQL?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage