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

trong postgres chọn, trả về một truy vấn con cột dưới dạng một mảng?

Sử dụng hàm tổng hợp :

select
    usr_id, 
    name, 
    array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name

hoặc hàm tạo mảng từ kết quả của một truy vấn con:

select
    u.usr_id, 
    name, 
    array(
        select tag_id 
        from tags t 
        where t.usr_id = u.usr_id
        ) as tag_arr
from users u

Tùy chọn thứ hai là truy vấn một nguồn đơn giản trong khi tùy chọn đầu tiên chung chung hơn, đặc biệt thuận tiện khi bạn cần nhiều tổng hợp từ một bảng có liên quan. Ngoài ra, biến thể đầu tiên sẽ nhanh hơn trên các bảng lớn hơn.

Lưu ý rằng để có hiệu suất tốt hơn, hãy usr_id các cột trong cả hai bảng phải được lập chỉ mục. Trong khi thường là users.usr_id là một khóa chính, đôi khi người ta có thể quên rằng chỉ mục của cột tham chiếu cũng rất hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL - Cách không bao gồm một số kết quả

  2. PostgreSQL 9.3:Bảng tổng hợp động

  3. Giá trị mảng hiển thị theo từng hàng cho một id duy nhất bằng Postgresql

  4. làm thế nào để sao chép dữ liệu từ tệp sang PostgreSQL bằng JDBC?

  5. Các hàm mảng Postgresql với QueryDSL