Comment afficher les numéros de ligne dans la requête PostgreSQL?

j'aimerais montrer le numéro d'observation pour chaque enregistrement retourné par une requête PostgreSQL.

je pense que dans 8.4 fonctions de fenêtrage peut effectuer cette capacité.

61
demandé sur sclv 2010-08-03 17:49:32

3 réponses

select   row_number() over (order by <field> nulls last) as rownum, *
from     foo_tbl
order by <field>

Si l'ordre n'est pas nécessaire, cette réponse peut également être simplifiée:

select row_number() over(), *  -- notice: no fields are needed
from   foo_tbl
92
répondu vol7ron 2014-02-28 18:43:32

pour les versions antérieures à 8.4:

SELECT    count(*) rownum, foo.*
FROM      datatable foo
JOIN      datatable bar
          ON (foo.pk_id < bar.pk_id)
GROUP BY  foo.pk_id, foo.a, foo.b
ORDER BY  rownum
;

-- if there isn't a single unique/primary key field, you can concatenate fields
--    Example: ON (foo.a||foo.b||foo.c < bar.a||bar.b||bar.c)

J'espère que ça aidera quelqu'un.

5
répondu vol7ron 2010-08-03 23:12:24

Juste interrogeant sans * affichera le nombre total de lignes retournées.

select from table_name ...;
0
répondu Vikram S 2018-10-03 06:54:10