Maison > base de données > tutoriel mysql > Comment répliquer la fonction ORDER BY FIELD() de MySQL dans PostgreSQL ?

Comment répliquer la fonction ORDER BY FIELD() de MySQL dans PostgreSQL ?

Barbara Streisand
Libérer: 2024-12-07 10:02:12
original
599 Les gens l'ont consulté

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

Simulation de ORDER BY FIELD() de MySQL dans Postgresql

Lors de la transition de MySQL vers PostgreSQL, les développeurs peuvent rencontrer l'absence de la fonction ORDER BY FIELD() dans PostgreSQL. Cette fonction fournit un moyen pratique de trier les enregistrements en fonction d'une liste de valeurs spécifiée.

Énoncé du problème :

Une application Rails utilise SQL qui inclut la clause de commande suivante :

SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
Copier après la connexion

Cette clause vise à trier les enregistrements en fonction de la liste spécifiée de codes de devise, avec un classement supplémentaire par champ de nom. Cependant, PostgreSQL ne prend pas en charge cette syntaxe.

Solution :

Pour simuler le comportement de ORDER BY FIELD() de MySQL dans PostgreSQL, vous pouvez utiliser une combinaison des Instruction CASE et clause ORDER BY. Voici comment :

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;
Copier après la connexion

Dans cette approche :

  • L'instruction CASE évalue le champ de code et attribue une priorité correspondante à chaque code de devise répertorié dans la fonction FIELD() dans MySQL .
  • La clause ORDER BY utilise cette priorité pour trier les enregistrements en premier, suivie du tri basé sur le nom field.

Cette méthode fournit un moyen pratique de simuler le comportement de ORDER BY FIELD() de MySQL dans PostgreSQL et garantit que les enregistrements sont triés comme souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal