Heim > Datenbank > MySQL-Tutorial > Wie generiert man sequentielle Zeilennummern in PostgreSQL-Abfragen?

Wie generiert man sequentielle Zeilennummern in PostgreSQL-Abfragen?

Susan Sarandon
Freigeben: 2024-12-28 00:53:14
Original
905 Leute haben es durchsucht

How to Generate Sequential Row Numbers in PostgreSQL Queries?

Generieren fortlaufender Zeilennummern in PostgreSQL-Abfragen

Bei der Arbeit mit PostgreSQL-Abfragen kann es wünschenswert sein, die Beobachtungsnummer für jeden zurückgegebenen Datensatz anzuzeigen . In PostgreSQL 8.4 und späteren Versionen kann dies mit der leistungsstarken Fensterfunktion row_number() erreicht werden.

Syntax:

Um sequentielle Zeilennummern zu generieren, verwenden Sie Folgendes Syntax:

select row_number() over (order by <field> nulls last) as rownum, *
from <table_name>
order by <field>;
Nach dem Login kopieren

Parameter:

  • : Das Feld, nach dem die Zeilen sortiert werden sollen.
  • < ;table_name>: Die Tabelle, aus der die Daten stammen ausgewählt.

Beispiel:

Um die Beobachtungszahlen für eine Tabelle mit dem Namen foo_tbl sortiert nach dem ID-Feld anzuzeigen, verwenden Sie die folgende Abfrage:

select row_number() over (order by id nulls last) as rownum, *
from foo_tbl
order by id;
Nach dem Login kopieren

Vereinfachte Syntax:

Wenn die Reihenfolge nicht stimmt Bei Bedarf kann die Abfrage vereinfacht werden, indem die order by-Klausel weggelassen wird:

select row_number() over(), *  -- no fields are needed
from foo_tbl;
Nach dem Login kopieren

Dadurch werden fortlaufende Zeilennummern ohne spezifische Reihenfolge generiert.

Proof of Concept:

Der folgende SQL Fiddle-Proof of Concept demonstriert die Verwendung der row_number()-Funktion zum Generieren fortlaufender Zeilennummern:

import sqlalchemy

# Create a test table
engine = sqlalchemy.create_engine('postgresql://postgres:my_password@localhost:5432/test_db')
metadata = sqlalchemy.MetaData()
table = sqlalchemy.Table('test_table', metadata,
    sqlalchemy.Column('id', sqlalchemy.Integer, primary_key=True),
    sqlalchemy.Column('name', sqlalchemy.String(255)),
    sqlalchemy.Column('score', sqlalchemy.Float),
)
metadata.create_all(engine)

# Insert some data into the table
insert_data = [
    {'id': 1, 'name': 'John', 'score': 90},
    {'id': 2, 'name': 'Jane', 'score': 85},
    {'id': 3, 'name': 'Bob', 'score': 95},
]
insert = table.insert().values(insert_data)
engine.execute(insert)

# Query the table with row numbers
select_query = sqlalchemy.select([
    sqlalchemy.func.row_number().over().label('rownum'),
    table.c.id,
    table.c.name,
    table.c.score,
]).order_by(table.c.id)
results = engine.execute(select_query).fetchall()

# Print the results
for result in results:
    print(f"Row {result.rownum}: {result.id}, {result.name}, {result.score}")
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie generiert man sequentielle Zeilennummern in PostgreSQL-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage