PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

SQL:Thêm cột với id tăng dần vào CHỌN

Sử dụng ROW_NUMBER() :

SQLFiddle

SELECT 
  name,
  ROW_NUMBER() OVER (ORDER BY name) AS id
FROM people;

CHỈNH SỬA:

Sự khác biệt giữa ORDER BY 1 so với ORDER BY column_name

SQLFiddleDemo

SELECT 
    name,
    ROW_NUMBER() OVER (ORDER BY name) AS id
FROM people;

/* Execution Plan */
QUERY PLAN WindowAgg (cost=83.37..104.37 rows=1200 width=38)
-> Sort (cost=83.37..86.37 rows=1200 width=38)
**Sort Key: name**
-> Seq Scan on people (cost=0.00..22.00 rows=1200 width=38)

SELECT 
    name,
    ROW_NUMBER() OVER (ORDER BY 1) AS id
FROM people;

/* Execution Plan */
QUERY PLAN WindowAgg (cost=0.00..37.00 rows=1200 width=38)
-> Seq Scan on people (cost=0.00..22.00 rows=1200 width=38)

Trong trường hợp thứ hai, không có thao tác sắp xếp.

Bạn cũng có thể viết truy vấn thứ hai là:

SELECT 
    name,
    ROW_NUMBER() OVER () AS id
FROM people;

Tại sao mọi người viết ORDER BY 1 trong các chức năng cửa sổ?

Bởi vì trong một số phương ngữ, nó là bắt buộc và ORDER BY 1 hoạt động như trình giữ chỗ.

Oracle:

SELECT 
  name,
  ROW_NUMBER() OVER (ORDER BY 1) AS id
FROM people;

TSQL:

SELECT 
    name,
    ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS id
FROM people;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PGAdmin 4 không sao lưu cơ sở dữ liệu mà không có lỗi

  2. Mac psql / readline - Thư viện không được tải

  3. PostgreSQL sử dụng pg_trgm chậm hơn sau đó quét toàn bộ

  4. Cách hoạt động của hàm Exp () trong PostgreSQL

  5. Tạo mô hình cho Flask-AppBuilder bằng flask-sqlqcodegen