web-dev-qa-db-ja.com

PostgreSQLクエリで行番号を表示する方法は?

PostgreSQLクエリによって返される各レコードの観測番号を表示したいと思います。

8.4では、ウィンドウ機能がこの機能を実行できると思います。

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

順序が不要な場合、この答えも簡略化できます。

select row_number() over(), *  -- notice: no fields are needed
from   foo_tbl
101
vol7ron

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)

これが誰かを助けることを願っています。

5
vol7ron