Existe-t-il un moyen de simuler rownum dans postgresql?Rownum dans postgresql
Répondre
Postgresql> 8,4
SELECT
row_number() OVER (ORDER BY col1) AS i,
e.col1,
e.col2,
...
FROM ...
Postgresql n'a pas d'équivalent de ROWNUM d'Oracle. Dans de nombreux cas, vous pouvez obtenir le même résultat en utilisant LIMIT et OFFSET dans votre requête.
-1 Cela semble être mal, voir la réponse acceptée ... –
+1 ROWNUM et ROW_NUMBER() OVER() ne sont pas exactement les mêmes –
Si vous voulez juste un numéro à venir essayer de nouveau ce sujet.
create temp sequence temp_seq;
SELECT inline_v1.ROWNUM,inline_v1.c1
FROM
(
select nextval('temp_seq') as ROWNUM, c1
from sometable
)inline_v1;
Vous pouvez ajouter une commande par le SQL inline_v1 de sorte que votre ROWNUM a une signification séquentielle à vos données. Peut-être pas le plus rapide, mais c'est une option si vous en avez vraiment besoin.
Je viens de tester dans Postgres 9.1 une solution qui est proche de Oracle ROWNUM:
select row_number() over() as id, t.*
from information_schema.tables t;
J'ai testé cela en 8.4 et ça marche là aussi. – Mac
Notez que cela ne respecte pas un 'ORDER BY' dans la requête externe. –
Postgresql ont limite.
code d'Oracle:
select *
from
tbl
where rownum <= 1000;
même dans le code de Postgresql:
select *
from
tbl
limit 1000
utiliser la clausule limite, avec le décalage de choisir le numéro de ligne -1 si u voulez obtenir le numéro 8 ligne utilisez donc:
limite 1 décalage 7
Si vous avez une clé unique, vous pouvez utiliser 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. ORACLE ROWNUM
- 2. Problème avec ROWNUM
- 3. Oracle ROWNUM pseudocolonne
- 4. Comment créer rownum dans SQL Server
- 5. Définition dynamique de jqGrid RowNum
- 6. Ordre d'exécution ORACLE SQL ROWNUM
- 7. Requête pour mettre à jour rowNum
- 8. fonction d'appel dans postgresql
- 9. procédures stockées dans postgresql
- 10. CREATE ASSERTION dans postgresql
- 11. Cardinalité dans PostgreSQL
- 12. Base de données Deadlocks lors de l'utilisation de Rownum?
- 13. Fonction Time Travel dans postgresql
- 14. indexation valeurs NULL dans PostgreSQL
- 15. Format double précision dans PostgreSQL
- 16. Utilisation de l'héritage dans PostgreSQL
- 17. Requête de réécriture dans PostgreSQL
- 18. expression régulière internationalisée dans postgresql
- 19. compression de texte dans PostgreSQL
- 20. comparaison des chaînes dans PostgreSQL
- 21. Performance entre SELECT MAX (nom_colonne) et ROWNUM = 1
- 22. Wix, PostgreSQL install, exécution des scripts Postgresql
- 23. Postgresql Sérialiser
- 24. Postgresql Query
- 25. PostgreSQL concaténation
- 26. postgresql union
- 27. Postgresql Tracing
- 28. Postgresql autocomplete?
- 29. Postgresql/php
- 30. PostgreSQL contrainte
Soyez prudent. C'est semblable au rownum d'oracle, mais c'est légèrement différent. Oracle rownum est assigné au moment de la lecture de la ligne à partir du disque, alors que ce row_number() est attribué en fonction de ce qui est dans votre OVER – Royce
Qu'en est-il des différences de vitesse? – Nashev