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

ĐẶT HÀNG THEO danh sách giá trị IN

Trong Postgres 9.4 trở lên, đây là đơn giản nhất và nhanh nhất :

SELECT c.*
FROM   comments c
JOIN   unnest('{1,3,2,4}'::int[]) WITH ORDINALITY t(id, ord) USING (id)
ORDER  BY t.ord;
  • WITH ORDINALITY đã được giới thiệu trong Postgres 9.4.

  • Không cần truy vấn con, chúng ta có thể sử dụng trực tiếp hàm set-return giống như một bảng. (A.k.a. "table-function".)

  • Một chuỗi ký tự để đưa vào mảng thay vì một hàm tạo ARRAY có thể dễ triển khai hơn với một số ứng dụng khách.

  • Để thuận tiện (tùy chọn), hãy sao chép tên cột mà chúng tôi đang tham gia vào (id trong ví dụ), vì vậy chúng ta có thể kết hợp với một USING ngắn gọn mệnh đề chỉ nhận được một phiên bản duy nhất của cột nối trong kết quả.

  • Hoạt động với bất kỳ kiểu đầu vào. Nếu cột khóa của bạn thuộc loại text , cung cấp một cái gì đó như '{foo,bar,baz}'::text[] .

Giải thích chi tiết:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách ly giao dịch trong PostgreSQL

  2. So sánh các mảng cho bằng nhau, bỏ qua thứ tự của các phần tử

  3. Cách Tand () hoạt động trong PostgreSQL

  4. Kích hoạt so với kiểm tra ràng buộc

  5. Làm cách nào để dừng tập lệnh Postgres khi nó gặp lỗi?