Gibt es eine Möglichkeit, rownum in postgresql zu simulieren?Rownum in postgresql
Antwort
Postgresql> 8,4
SELECT
row_number() OVER (ORDER BY col1) AS i,
e.col1,
e.col2,
...
FROM ...
Postgresql hat kein Äquivalent von Oracle ROWNUM. In vielen Fällen können Sie dasselbe Ergebnis erzielen, wenn Sie in Ihrer Abfrage LIMIT und OFFSET verwenden.
-1 Das Ordnung zu sein scheint, finden Sie in der akzeptierte Antwort ... –
+1 ROWNUM und ROW_NUMBER() OVER() sind nicht genau das gleiche –
Wenn Sie nur eine Nummer wollen, dass diese wieder kommen versuchen.
create temp sequence temp_seq;
SELECT inline_v1.ROWNUM,inline_v1.c1
FROM
(
select nextval('temp_seq') as ROWNUM, c1
from sometable
)inline_v1;
Sie können einen Auftrag von zum inline_v1 SQL hinzufügen, damit Ihre ROWNUM eine sequentielle Bedeutung, um Ihre Daten haben.
select nextval('temp_seq') as ROWNUM, c1
from sometable
ORDER BY c1 desc;
Vielleicht nicht die schnellste, aber es ist eine Option, wenn Sie sie wirklich brauchen.
I in Postgres 9.1 eine Lösung nur getestet, die auf Oracle ROWNUM Nähe:
select row_number() over() as id, t.*
from information_schema.tables t;
Ich habe das in 8.4 getestet und es funktioniert auch dort. – Mac
Beachten Sie, dass dies eine ORDER BY in der äußeren Abfrage nicht berücksichtigt. –
Postgresql haben Limit.
Oracle Code:
select *
from
tbl
where rownum <= 1000;
gleichen in PostgreSQLs Code:
select *
from
tbl
limit 1000
die Grenze clausule verwenden, mit dem Offset auf die Zeilennummer wählen -1 also, wenn u wollen die Nummer 8 Reihe bekommen so verwenden:
Grenze 1 Offset 7
Wenn Sie einen eindeutigen Schlüssel haben, können Sieverwenden
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. Was ist rowID & rowNum (ROWID vs ROWNUM)
- 2. Ausnahme mit rownum in mybatis
- 3. mysql rownum verursacht Fehler
- 4. ROWNUM Abfrage zurück
- 5. SQLITE-Äquivalent für Oracle ROWNUM?
- 6. Wie RowNum-Spalte in SQL Server erstellen?
- 7. für PostgreSQL
- 8. Probleme mit Oracle-Datenbank mit ROWNUM
- 9. Was die OracleType von ist ROWNUM
- 10. in PostgreSQL
- 11. Oracle/SQL: Warum Abfrage funktioniert "SELECT FROM Aufzeichnungen * WHERE rownum> = 5 und rownum <= 10" - Rückkehr null Zeilen
- 12. $ rownum = mysqli_num_rows ($ result); return 0 aber muss 1 zurückgeben
- 13. Wie Oracle ORDER BY und ROWNUM korrekt verwenden?
- 14. Warum kann meine Abfrage die RowNum-Spalte nicht finden?
- 15. Mybatis RowBounds vs Oracle Paginierung Abfrage rownum und verschachtelte Unterabfrage
- 16. MySQL Limit Auswahl durch Auswahl von rownum als Startwert
- 17. - Postgresql
- 18. Leistung zwischen SELECT MAX (col_name) und ROWNUM = 1
- 19. SQL ROWNUM wie Zeilen zwischen einem bestimmten Bereich zurückgegeben werden
- 20. Finden Sie rownum aus mySQL Ergebnis für das Ranking
- 21. Suche in PostgreSQL Tabelle
- 22. InputStream in PostgreSQL einfügen
- 23. Postgresql ALL mit IN
- 24. PostgreSQL Syntaxfehler in PGAdmin
- 25. Datumsbereich in PostgreSQL
- 26. Statistikziele in PostgreSQL überprüfen
- 27. hierarchische Summe in PostgreSQL
- 28. COPY-Funktion in PostgreSQL
- 29. Slick in postgreSQL einfügen
- 30. Füllung Lücken in postgresql
vorsichtig. Das ist ähnlich dem Orakel rownum, aber es ist etwas anders. Oracle's rownum wird beim Lesen der Zeile von der Festplatte zugewiesen, während diese row_number() abhängig davon zugewiesen wird, was in Ihrem OVER – Royce
ist. Was ist mit Geschwindigkeitsunterschieden? – Nashev