87

postgresql で rownum をシミュレートする方法はありますか?

4

8 に答える 8

97

Postgresql > 8.4

SELECT 
    row_number() OVER (ORDER BY col1) AS i, 
    e.col1, 
    e.col2, 
    ... 
FROM ... 
于 2010-10-18T13:41:12.033 に答える
32

Postgresql には制限があります。

オラクルのコード:

select *
from
  tbl
where rownum <= 1000;

Postgresql のコードでも同じです:

select *
from
  tbl
limit 1000
于 2015-09-25T12:28:05.837 に答える
29

Postgres 9.1 で、Oracle ROWNUM に近いソリューションをテストしました。

select row_number() over() as id, t.*
from information_schema.tables t;
于 2012-10-03T09:50:47.870 に答える
9

数値を元に戻したい場合は、これを試してください。

create temp sequence temp_seq;
SELECT inline_v1.ROWNUM,inline_v1.c1
FROM
(
select nextval('temp_seq') as ROWNUM, c1 
from sometable
)inline_v1;

order by を inline_v1 SQL に追加して、ROWNUM がデータに対して連続した意味を持つようにすることができます。

select nextval('temp_seq') as ROWNUM, c1 
from sometable
ORDER BY c1 desc;

最速ではないかもしれませんが、本当に必要な場合はオプションです。

于 2010-10-18T15:06:54.753 に答える
2

Postgresql には、Oracle の ROWNUM に相当するものはありません。多くの場合、クエリで LIMIT と OFFSET を使用して同じ結果を得ることができます。

于 2010-10-18T13:41:05.180 に答える