Maison >base de données >tutoriel mysql >Comment trier par date/heure croissante avec des valeurs NULL en premier dans PostgreSQL ?

Comment trier par date/heure croissante avec des valeurs NULL en premier dans PostgreSQL ?

DDD
DDDoriginal
2025-01-23 02:22:10299parcourir

How to Sort by Ascending Date/Time with NULL Values First in PostgreSQL?

Champs date/heure de la table PostgreSQL triés par ordre croissant, les valeurs NULL en premier

Lors du tri par champ date/heure par ordre croissant dans une table PostgreSQL, les valeurs NULL doivent être prioritaires. De plus, les enregistrements last_updated non nuls doivent être triés par ordre croissant immédiatement après les valeurs NULL.

L'expression ORDER BY de PostgreSQL fournit le modificateur NULLS FIRST | LAST pour gérer cette situation. En précisant NULLS FIRST, les enregistrements avec une valeur NULL pour le champ last_updated apparaîtront avant les enregistrements non NULL :

<code class="language-sql">... ORDER BY last_updated NULLS FIRST</code>

Cependant, l'utilisation de NULLS FIRST avec le tri décroissant (DESC) renvoie le résultat opposé, les valeurs NULL apparaîtront en dernier. Pour mettre les valeurs NULL en dernier dans l'ordre décroissant, utilisez NULLS LAST :

<code class="language-sql">... ORDER BY last_updated DESC NULLS LAST</code>

Pour utiliser un index avec l'ordre de tri modifié, il doit correspondre à la définition de l'index :

<code class="language-sql">CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);</code>

Bien que PostgreSQL puisse lire les index btree à l'envers, il est plus efficace de créer un index qui correspond à l'ordre de tri :

<code class="language-sql">CREATE INDEX foo_idx ON tbl (last_updated);</code>

La position des valeurs NULL dans la liste annexée affecte les performances des requêtes. Pour plus d’informations, consultez Impact sur les performances des vues sur les fonctions d’agrégation et limitations des jeux de résultats.

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!

Déclaration:
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