Maison >base de données >tutoriel mysql >Comment répliquer la fonction 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
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;
Dans cette approche :
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!