¿Hay alguna forma de simular rownum en postgresql?Rownum en postgresql
Respuesta
PostgreSQL> 8,4
SELECT
row_number() OVER (ORDER BY col1) AS i,
e.col1,
e.col2,
...
FROM ...
Postgresql no tiene un equivalente de ROWNUM de Oracle. En muchos casos, puede obtener el mismo resultado utilizando LIMIT y OFFSET en su consulta.
-1 Eso parece estar mal, ver la respuesta aceptada ... –
1 ROWNUM y ROW_NUMBER() OVER() no son exactamente la misma –
Si lo que desea es un número que vuelva probar esto.
create temp sequence temp_seq;
SELECT inline_v1.ROWNUM,inline_v1.c1
FROM
(
select nextval('temp_seq') as ROWNUM, c1
from sometable
)inline_v1;
se puede añadir un pedido por al SQL inline_v1 por lo que su ROWNUM tiene algún significado secuencial a los datos.
select nextval('temp_seq') as ROWNUM, c1
from sometable
ORDER BY c1 desc;
podría no ser el más rápido, pero es una opción si realmente los necesita.
acabo de prueba en Postgres 9.1 una solución que está cerca de Oracle ROWNUM:
select row_number() over() as id, t.*
from information_schema.tables t;
Probé esto en 8.4 y funciona allí también. – Mac
Tenga en cuenta que esto no respetará un 'ORDER BY' en la consulta externa. –
Postgresql tienen límite.
código de Oracle:
select *
from
tbl
where rownum <= 1000;
misma en el código de PostgreSQL:
select *
from
tbl
limit 1000
utilizan la cláusula de límite, con el desplazamiento para elegir el número de fila -1 así que si quieren conseguir la fila número 8 a fin de utilizar:
límite de 1 compensado 7
Si tiene una clave única, es posible utilizar 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. diferencia al usar ROWNUM
- 2. Oracle ROWNUM rendimiento
- 3. SQLite equivalente para Oracle ROWNUM?
- 4. SQL ROWNUM cómo devolver filas entre un rango específico
- 5. Oracle/SQL: ¿Por qué la consulta "SELECT * FROM registros en los que rownum> = 5 Y rownum <= 10" - retorno a cero filas
- 6. Salida JSON en Postgresql
- 7. PostgreSQL actual en Actualizar
- 8. create table en postgreSQL
- 9. getdate() en EnterpriseDB PostgreSQL
- 10. Función COPY en PostgreSQL
- 11. Datos espaciales en PostgreSQL
- 12. Trituración XML en PostgreSQL
- 13. Comportamiento extraño en Postgresql
- 14. Sumisión condicional en PostgreSQL
- 15. cláusula HAVING en PostgreSQL
- 16. Ver error en PostgreSQL
- 17. Validación en postgreSQL
- 18. usando esquemas en postgresql
- 19. Tabla en memoria en PostgreSQL
- 20. Bajo qué condiciones ROWNUM = 1 aumenta significativamente el rendimiento en una consulta syle "exists"
- 21. En una base de datos Oracle, ¿cuál es la diferencia entre ROWNUM y ROW_NUMBER?
- 22. Postgresql Concurrency
- 23. secuencias Postgresql
- 24. Aprendizaje PostgreSQL
- 25. postgresql deadlock
- 26. ¿Cómo auto-incrementar en PostgreSQL?
- 27. cláusula NOT EXISTS en Postgresql
- 28. Transacciones anidadas en postgresql 8.2?
- 29. Tecla Extranjera doble en postgresql
- 30. revisar las revisiones en postgresql
tener cuidado. Esto es similar al Rownum de Oracle, pero es ligeramente diferente. El Rownum de Oracle se asigna al momento de leer la fila desde el disco, mientras que este row_number() se asigna dependiendo de lo que haya en OVER – Royce
¿Qué pasa con las diferencias de velocidad? – Nashev