Maison > base de données > tutoriel mysql > Comment trier les valeurs non nulles par ordre croissant, puis les valeurs nulles, avec les valeurs -1 en dernier dans PostgreSQL ?

Comment trier les valeurs non nulles par ordre croissant, puis les valeurs nulles, avec les valeurs -1 en dernier dans PostgreSQL ?

Linda Hamilton
Libérer: 2025-01-03 08:07:38
original
617 Les gens l'ont consulté

How to Sort Non-Null Values Ascending, then Nulls, with -1 Values Last in PostgreSQL?

Tri des valeurs nulles d'une manière spéciale après les valeurs non nulles

Contexte

Dans une table PostgreSQL avec un champ de tri facultatif, l'objectif est pour trier les valeurs comme suit :

  • Les valeurs non nulles doivent venir en premier, en les triant ordre croissant en fonction de leurs valeurs de tri.
  • Les valeurs NULL doivent apparaître après les valeurs non nulles.
  • Exceptionnellement, les valeurs de tri de -1 doivent apparaître après toutes les autres valeurs non nulles.

Solution

Pour obtenir ce comportement de tri, une approche consiste à utiliser le ORDER BY suivant clause :

ORDER BY (sort IS NOT DISTINCT FROM -1), sort
Copier après la connexion

Explication

Cette clause fonctionne comme suit :

  • (sort IS NOT DISTINCT FROM -1) est évalué à FALSE pour toutes les valeurs sauf - 1, qui est évalué à VRAI.
  • L'expression est triée par ordre croissant, ce qui signifie des valeurs FAUX (non nulles les valeurs autres que -1) précèdent les valeurs VRAIES (-1).
  • La clause ORDER BY secondaire trie ensuite selon la valeur de tri, garantissant que les valeurs non nulles sont triées par ordre croissant au sein de leurs groupes respectifs.

Exemple

Considérez les exemples de données fournis :

id f_id name sort
1 1 zeta -1
2 1 alpha 1
3 1 gamma 3
4 1 beta 2
5 1 delta NULL
6 1 epsilon NULL

Utilisation du fournie, les éléments seraient triés comme suit :

alpha, beta, gamma, delta, epsilon, zeta
Copier après la connexion

Formes alternatives

Une alternative équivalente à la clause initiale est :

ORDER BY (sort IS DISTINCT FROM -1) DESC, sort
Copier après la connexion

Cette clause produit la même comportement de tri mais utilise le mot-clé DESC pour trier l'expression (sort IS DISTINCT FROM -1) par ordre décroissant.

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