집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL 쿼리에서 연속 행 번호를 생성하는 방법은 무엇입니까?
PostgreSQL 쿼리에서 연속 행 번호 생성
PostgreSQL 쿼리 작업 시 반환된 각 레코드에 대한 관찰 번호를 표시하는 것이 바람직할 수 있습니다. . PostgreSQL 8.4 이상 버전에서는 강력한 창 함수 row_number()를 사용하여 이를 달성할 수 있습니다.
구문:
순차 행 번호를 생성하려면 다음을 사용합니다. 구문:
select row_number() over (order by <field> nulls last) as rownum, * from <table_name> order by <field>;
매개변수:
예:
id 필드를 기준으로 foo_tbl이라는 테이블의 관찰 번호를 표시하려면 다음 쿼리를 사용합니다.
select row_number() over (order by id nulls last) as rownum, * from foo_tbl order by id;
단순화 구문:
순서가 필요하지 않은 경우 order by 절을 생략하여 쿼리를 단순화할 수 있습니다.
select row_number() over(), * -- no fields are needed from foo_tbl;
이렇게 하면 특정 순서 없이 연속 행 번호가 생성됩니다.
개념 증명:
다음 SQL Fiddle 개념 증명은 row_number() 함수를 사용하여 순차적 행 번호를 생성하는 방법을 보여줍니다.
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}")
위 내용은 PostgreSQL 쿼리에서 연속 행 번호를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!