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

J’aimerais afficher le numéro d’observation pour chaque enregistrement renvoyé par une requête PostgreSQL.

Je pense que dans 8.4 les fonctions de fenêtrage peuvent effectuer cette capacité.

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

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 

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 cela aide quelqu'un.