Maison >base de données >tutoriel mysql >Comment puis-je ajouter des numéros de ligne aux résultats de ma requête PostgreSQL à l'aide des fonctions de fenêtre ?

Comment puis-je ajouter des numéros de ligne aux résultats de ma requête PostgreSQL à l'aide des fonctions de fenêtre ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-26 15:37:15888parcourir

How Can I Add Row Numbers to My PostgreSQL Query Results Using Window Functions?

Affichage des numéros de ligne dans les requêtes PostgreSQL avec des fonctions de fenêtre

Pour faciliter le référencement et l'analyse, afficher les numéros de ligne pour chaque enregistrement dans une requête PostgreSQL peut être très bénéfique. Dans PostgreSQL 8.4 et versions ultérieures, la puissante fonction de fenêtre ROW_NUMBER() active cette fonctionnalité.

Utilisation de la fonction ROW_NUMBER()

Pour afficher le numéro d'observation séquentiel pour chaque enregistrement , vous pouvez utiliser la fonction ROW_NUMBER() dans votre requête. Sa syntaxe comprend une clause ORDER BY pour déterminer la séquence des lignes. Voici comment l'implémenter :

SELECT ROW_NUMBER() OVER (ORDER BY field NULLS LAST) AS rownum, *
FROM foo_tbl
ORDER BY field;

Dans cette requête :

  • ROW_NUMBER() OVER (ORDER BY field NULLS LAST) calcule le numéro de ligne pour chaque enregistrement, en ordonnant le lignes dans l'ordre croissant.
  • foo_tbl représente le tableau contenant les données que vous souhaitez enumerate.
  • le champ spécifie la colonne selon laquelle vous souhaitez trier les lignes. Les valeurs nulles sont gérées par l'option NULLS LAST, en les plaçant à la fin de la séquence.

Approche simplifiée sans commande

Si l'ordre des lignes n'est pas essentiel , vous pouvez simplifier la requête en excluant la clause ORDER BY :

SELECT ROW_NUMBER() OVER(), *
FROM foo_tbl;

Cette approche attribue des numéros de ligne à chaque enregistrement sans prendre en compte tout ordre ou tri spécifique.

Exemple

Considérez la démonstration SQL Fiddle suivante : https://www.sqlfiddle.com/#!17/665c8e/1

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