>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL 쿼리에서 연속 행 번호를 생성하는 방법은 무엇입니까?

PostgreSQL 쿼리에서 연속 행 번호를 생성하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-28 00:53:14907검색

How to Generate Sequential Row Numbers in PostgreSQL Queries?

PostgreSQL 쿼리에서 연속 행 번호 생성

PostgreSQL 쿼리 작업 시 반환된 각 레코드에 대한 관찰 번호를 표시하는 것이 바람직할 수 있습니다. . PostgreSQL 8.4 이상 버전에서는 강력한 창 함수 row_number()를 사용하여 이를 달성할 수 있습니다.

구문:

순차 행 번호를 생성하려면 다음을 사용합니다. 구문:

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

매개변수:

  • : 행을 정렬해야 하는 필드입니다.
  • < ;table_name>: 데이터가 있는 테이블 selected.

예:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.