Dans une table PostgreSQL avec un champ de tri facultatif, l'objectif est pour trier les valeurs comme suit :
Pour obtenir ce comportement de tri, une approche consiste à utiliser le ORDER BY suivant clause :
ORDER BY (sort IS NOT DISTINCT FROM -1), sort
Cette clause fonctionne comme suit :
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
Une alternative équivalente à la clause initiale est :
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort
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!