Maison > base de données > tutoriel mysql > Comment trier les données PostgreSQL avec des valeurs NULL en dernier, à l'exception d'une valeur spécifique ?

Comment trier les données PostgreSQL avec des valeurs NULL en dernier, à l'exception d'une valeur spécifique ?

Susan Sarandon
Libérer: 2025-01-04 05:33:42
original
406 Les gens l'ont consulté

How to Order PostgreSQL Data with NULLs Last, Except for a Specific Value?

Commander les valeurs NULL après toutes les autres, sauf les valeurs spéciales

Lors du tri des données dans une table PostgreSQL contenant des champs de tri facultatifs, un défi courant gère les valeurs nulles. Il est souhaitable de placer les tâches avec des valeurs de tri nulles après toutes les autres, mais d'accorder la priorité aux tâches avec une valeur de tri spéciale, telle que -1.

Ceci peut être réalisé en utilisant la fonction COALESCE en conjonction avec des opérateurs booléens. , en particulier l'opérateur (IS NOT DISTINCT FROM). La requête suivante illustre cette approche :

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

Comment ça marche :

L'expression (sort IS NOT DISTINCT FROM -1) est évaluée à FALSE pour toutes les valeurs sauf -1, qui est évalué à VRAI. Dans l'ordre de tri par défaut de PostgreSQL, les valeurs NULL sont placées en dernier, tandis que TRUE est classé plus haut que FALSE.

En incorporant cette expression dans la clause ORDER BY, les tâches avec des valeurs de tri de -1 sont positionnées après les tâches avec des valeurs non- valeurs de tri nulles, tandis que les tâches avec des valeurs de tri nulles sont placées après toutes les autres tâches.

Supplémentaire Remarque :

Une requête équivalente alternative peut être écrite à l'aide du mot-clé DESC :

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

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