Maison > base de données > tutoriel mysql > Comment simuler ORDER BY FIELD() de MySQL dans PostgreSQL ?

Comment simuler ORDER BY FIELD() de MySQL dans PostgreSQL ?

DDD
Libérer: 2024-12-31 08:04:10
original
318 Les gens l'ont consulté

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

Simulation de ORDER BY FIELD() de MySQL dans PostgreSQL

En tant qu'utilisateur MySQL passant à PostgreSQL, vous pouvez rencontrer la limitation que ORDER BY La syntaxe FIELD() n'est pas prise en charge dans cette dernière base de données. Cela soulève la question de savoir comment émuler son comportement dans PostgreSQL.

Problème :

MySQL vous permet de définir un ordre personnalisé à l'aide de la clause ORDER BY FIELD(). Elle prend une valeur et une série de valeurs attendues, et les résultats de la requête sont triés dans l'ordre des valeurs fournies.

Par exemple :

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

Cette requête donnerait la priorité aux lignes avec le code « GBP », « EUR », « BBD », « AUD », « CAD » et « USD » dans cet ordre, tout en triant davantage les résultats par ordre croissant selon le Colonne 'nom'.

Solution :

Dans PostgreSQL, vous pouvez obtenir des fonctionnalités similaires en utilisant une combinaison d'instructions CASE et en triant selon les valeurs numériques résultantes.

Voici comment simuler le comportement de la clause ORDER BY FIELD() :

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 requête :

  • L'instruction CASE attribue une valeur numérique (1-6) à chaque valeur spécifiée de la colonne « code ».
  • Les lignes avec les valeurs spécifiées sont triées par ordre numérique trier selon les valeurs attribuées.
  • Si la valeur de la colonne « code » ne correspond à aucune des valeurs spécifiées, elle reçoit une valeur par défaut de 7.
  • Les résultats sont ensuite triés par ordre croissant par la colonne « nom ».

Cette technique vous permet de hiérarchiser les lignes en fonction d'un ordre prédéfini, fournissant une approximation proche de la fonctionnalité de la clause MySQL ORDER BY FIELD().

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal