Есть ли способ имитировать rownum в postgresql?
Rownum в postgresql
Ответ 1
Postgresql > 8.4
SELECT
row_number() OVER (ORDER BY col1) AS i,
e.col1,
e.col2,
...
FROM ...
Ответ 2
Я только что тестировал в Postgres 9.1 решение, близкое к Oracle ROWNUM:
select row_number() over() as id, t.*
from information_schema.tables t;
Ответ 3
Если вы просто хотите, чтобы число возвращалось, попробуйте это.
create temp sequence temp_seq;
SELECT inline_v1.ROWNUM,inline_v1.c1
FROM
(
select nextval('temp_seq') as ROWNUM, c1
from sometable
)inline_v1;
Вы можете добавить заказ на inline_v1 SQL, чтобы ваш ROWNUM имел некоторые последовательные значения для ваших данных.
select nextval('temp_seq') as ROWNUM, c1
from sometable
ORDER BY c1 desc;
Возможно, не самый быстрый, но это вариант, если вам действительно нужны.
Ответ 4
Postgresql имеет предел.
Код Oracle:
select *
from
tbl
where rownum <= 1000;
то же самое в коде Postgresql:
select *
from
tbl
limit 1000
Ответ 5
Postgresql не имеет эквивалента Oracle ROWNUM. Во многих случаях вы можете добиться того же результата, используя LIMIT и OFFSET в своем запросе.
Ответ 6
используйте предел clausule, со смещением, чтобы выбрать номер строки -1, поэтому, если вы хотите получить строку с номером 8, используйте:
предел 1 смещение 7