Rownum в postgresql
есть ли способ имитировать rownum в postgresql ?
7 ответов:
Я только что протестировал в Postgres 9.1 решение, которое близко к Oracle ROWNUM:
select row_number() over() as id, t.* from information_schema.tables t;
Если вы просто хотите номер, чтобы вернуться попробовать это.
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 в SQL inline_v1, чтобы ваш ROWNUM имел некоторое последовательное значение для ваших данных.
select nextval('temp_seq') as ROWNUM, c1 from sometable ORDER BY c1 desc;
не может быть быстрым, но это вариант, если вы действительно нуждаетесь в них.
у Postgresql есть предел.
в Oracle:select * from tbl where rownum <= 1000;
то же самое в коде Postgresql:
select * from tbl limit 1000
Postgresql не имеет эквивалента ROWNUM Oracle. Во многих случаях вы можете достичь того же результата, используя LIMIT и OFFSET в своем запросе.