Esiste un modo per simulare il rownum in postgresql?Rownum in postgresql
risposta
PostgreSQL> 8,4
SELECT
row_number() OVER (ORDER BY col1) AS i,
e.col1,
e.col2,
...
FROM ...
Postgresql non ha un equivalente di ROWNUM di Oracle. In molti casi è possibile ottenere lo stesso risultato utilizzando LIMIT e OFFSET nella query.
-1 che sembra essere sbagliato, vedere la risposta accettata ... –
+1 ROWNUM e ROW_NUMBER() OVER() non sono esattamente la stessa –
Se si desidera solo un certo numero di tornare provare questo.
create temp sequence temp_seq;
SELECT inline_v1.ROWNUM,inline_v1.c1
FROM
(
select nextval('temp_seq') as ROWNUM, c1
from sometable
)inline_v1;
È possibile aggiungere un ordine dal al SQL inline_v1 così il vostro ROWNUM ha qualche significato sequenziale ai dati.
select nextval('temp_seq') as ROWNUM, c1
from sometable
ORDER BY c1 desc;
Potrebbe non essere il più veloce, ma è un'opzione se davvero ne avete bisogno.
ho appena testato in Postgres 9.1 una soluzione che è vicino a Oracle ROWNUM:
select row_number() over() as id, t.*
from information_schema.tables t;
Ho provato questo in 8.4 e funziona anche lì. – Mac
Si noti che questo non rispetterà un 'ORDER BY' nella query esterna. –
PostgreSQL hanno limite.
codice di Oracle:
select *
from
tbl
where rownum <= 1000;
stesso nel codice di PostgreSQL:
select *
from
tbl
limit 1000
utilizzare il clausule limite, con l'offset per scegliere il numero di riga -1 quindi se u desidera ottenere la riga numero 8 in modo da utilizzare:
limite 1 compensata 7
Se si dispone di una chiave univoca, è possibile utilizzare COUNT(*) OVER (ORDER BY unique_key) as ROWNUM
SELECT t.*, count(*) OVER (ORDER BY k) ROWNUM
FROM yourtable t;
| k | n | rownum |
|---|-------|--------|
| a | TEST1 | 1 |
| b | TEST2 | 2 |
| c | TEST2 | 3 |
| d | TEST4 | 4 |
- 1. Qual è rowID & ROWNUM (ROWID vs ROWNUM)
- 2. equivalente SQLITE per Oracle's ROWNUM?
- 3. Qual è l'OracleType di ROWNUM
- 4. Oracle/SQL: Perché query "SELECT * FROM record in cui rownum> = 5 e rownum <= 10" - restituiscono zero righe
- 5. Come utilizzare Oracle ORDER BY e ROWNUM correttamente?
- 6. SQL ROWNUM come restituire righe tra un intervallo specifico
- 7. Perché = l'operatore non funziona con ROWNUM diverso dal valore 1?
- 8. Uscita JSON in Postgresql
- 9. postgreSQL - in contro qualsiasi
- 10. Strane abitudini in Postgresql
- 11. Sommatoria condizionale in PostgreSQL
- 12. crea tabella in postgreSQL
- 13. Funzione COPY in PostgreSQL
- 14. revisioni traccia in postgresql
- 15. Tipo derivato in PostgreSQL
- 16. Validazione in postgreSQL
- 17. Abilita Postgresql in Cygwin
- 18. Dati spaziali in PostgreSQL
- 19. somma gerarchica in PostgreSQL
- 20. Eredità PostgreSQL in ActiveRecord?
- 21. utilizzando schemi in postgresql
- 22. In quali condizioni ROWNUM = 1 aumenta significativamente le prestazioni in una query sile "esistente"
- 23. Tabella in memoria in PostgreSQL
- 24. Oracle: aggiornamento di una colonna di tabella utilizzando ROWNUM in combinazione con la clausola ORDER BY
- 25. jqGrid restituisce solo i record come definito in rowNum se si utilizza loadonce: true
- 26. Formato doppia precisione in PostgreSQL
- 27. Doppia chiave esterna in postgresql
- 28. gaussiana distribuzione casuale in PostgreSQL
- 29. Selezione per mese in PostgreSQL
- 30. Problematic nameless table in Postgresql
stare attenti. Questo è simile al reap di oracolo, ma è leggermente diverso. Il rownum di Oracle viene assegnato al momento della lettura della riga dal disco, mentre questo numero_riga() viene assegnato a seconda di cosa c'è nel tuo OVER – Royce
E per quanto riguarda le differenze di velocità? – Nashev