Maison > base de données > tutoriel mysql > Comment trier les valeurs nulles en dernier et une valeur spécifique avant-dernière dans PostgreSQL ?

Comment trier les valeurs nulles en dernier et une valeur spécifique avant-dernière dans PostgreSQL ?

DDD
Libérer: 2024-12-29 03:12:11
original
433 Les gens l'ont consulté

How to Sort Nulls Last and a Specific Value Second to Last in PostgreSQL?

Comment trier les valeurs nulles après toutes les autres, avec un cas particulier

Problème :

Lors du tri d'une table PostgreSQL avec un champ de tri facultatif (tri), comment pouvez-vous vous assurer que :

  • Les valeurs nulles dans le tri sont triées après toutes les valeurs non nulles.
  • Une valeur spéciale de -1 dans le tri est trié après les valeurs non nulles normales mais avant les valeurs nulles.

Solution :

Utilisez le SQL suivant déclaration :

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

Explication :

  • L'expression (le tri N'EST PAS DISTINCT DE -1) est évaluée comme :

    • FALSE pour toutes les valeurs de tri sauf -1.
    • TRUE pour sort = -1.
  • Le classement par cette expression regroupe d'abord les valeurs en deux catégories : sort = -1 et toutes les autres valeurs de tri.
  • Le classement secondaire par ordres de tri au sein de chaque catégorie.

Exemple :

Considérez l'exemple suivant data :

id | f_id |   name   | sort
---+------+----------+-------
 1 |    1 | zeta     |    -1
 2 |    1 | alpha    |     1
 3 |    1 | gamma    |     3
 4 |    1 | beta     |     2
 5 |    1 | delta    |     
 6 |    1 | epsilon  |     
Copier après la connexion

La requête produira le résultat trié suivant :

id | f_id |   name   | sort
---+------+----------+-------
 2 |    1 | alpha    |     1
 4 |    1 | beta     |     2
 3 |    1 | gamma    |     3
 5 |    1 | delta    |     
 6 |    1 | epsilon  |     
 1 |    1 | zeta     |    -1
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal