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

Song song unnest () và sắp xếp thứ tự trong PostgreSQL

Có, đó là một tính năng của Postgres và tính năng bỏ ghi chú song song được đảm bảo để được đồng bộ hóa (miễn là tất cả các mảng có cùng số phần tử).
Postgres 9.4 thêm một giải pháp rõ ràng cho tính năng không phù hợp song song:

  • Bỏ kết hợp nhiều mảng song song

Tuy nhiên, thứ tự của các hàng kết quả không được đảm bảo. Trên thực tế, với một câu lệnh đơn giản như:

SELECT unnest(ARRAY[5,3,9]) AS id

thứ tự kết quả của các hàng là "được đảm bảo", nhưng Postgres không khẳng định bất cứ điều gì. Trình tối ưu hóa truy vấn có thể tự do sắp xếp các hàng khi nó thấy phù hợp miễn là thứ tự không được xác định rõ ràng. Điều này có thể có tác dụng phụ trong các truy vấn phức tạp hơn.

Nếu truy vấn thứ hai trong câu hỏi của bạn là những gì bạn thực sự muốn (thêm số chỉ mục vào các phần tử mảng chưa được thiết lập), thì có một cách tốt hơn với create_subscripts () :

SELECT unnest(ARRAY[5,3,9]) AS id
     , generate_subscripts(ARRAY[5,3,9], 1) AS idx
ORDER  BY idx;

Chi tiết trong câu trả lời liên quan này:

  • Cách truy cập chỉ mục nội bộ của mảng với postgreSQL?

Bạn sẽ quan tâm đến WITH ORDINALITY trong Postgres 9.4 :

  • PostgreSQL unnest () với số phần tử

Sau đó, bạn có thể sử dụng:

SELECT * FROM unnest(ARRAY[5,3,9]) WITH ORDINALITY tbl(id, idx);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để làm việc với các số thập phân có độ chính xác cao trong PHP

  2. Mẹo lưu trữ bản sao lưu PostgreSQL trên Amazon AWS

  3. Tham gia SQL cột bí danh

  4. Tôi quên mật khẩu tôi đã nhập trong khi cài đặt postgres

  5. Quyền bị từ chối đối với mối quan hệ