Мне нужно сделать преобразование из Oracle SQL в PostgreSQL.Преобразование rownum из Oracle в Postgres
select * from table1 inner join table2 on table1.id = table2.table1Id
where table1.col1 = 'TEST'
and rownum <=5
order by table2.col1
Если удалить and rownum <=5
и поставить в конце limit 5
, существует различие между 2 диалектами. В Oracle сначала выбираются 5 элементов, и после этого они сортируются по table2.col1
.
В Postgres сначала сортируется весь список, а ПОСЛЕ выбраны первые 5 элементов.
Как получить тот же результат в Postgres, что и в Oracle?
Спасибо!
http://stackoverflow.com/questions/3959692/rownum-in-postgresql – ZaoTaoBao
Поскольку результат в Oracle в основном случайный - нет надежного способа предсказать, какие 5 строк будут выбраны - вероятно, невозможно гарантировать, что запрос возвращает те же результаты в обеих системах. –