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

Mảng tổng hợp postgresql

Sử dụng array_agg:http://www.sqlfiddle.com/#!1/5099e/1

SELECT s.name,  array_agg(g.Mark) as marks        
FROM student s
LEFT JOIN Grade g ON g.Student_id = s.Id
GROUP BY s.Id

Nhân tiện, nếu bạn đang sử dụng Postgres 9.1, bạn không cần phải lặp lại các cột trên SELECT to GROUP BY, ví dụ:bạn không cần phải lặp lại tên sinh viên trên GROUP BY. Bạn chỉ có thể NHÓM THEO trên khóa chính. Nếu bạn xóa khóa chính trên học sinh, bạn cần lặp lại tên học sinh trên GROUP BY.

CREATE TABLE grade
    (Student_id int, Mark varchar(2));

INSERT INTO grade
    (Student_id, Mark)
VALUES
    (1, 'A'),
    (2, 'B'),
    (2, 'B+'),
    (3, 'C'),
    (3, 'A');


CREATE TABLE student
    (Id int primary key, Name varchar(5));

INSERT INTO student
    (Id, Name)
VALUES
    (1, 'John'),
    (2, 'David'),
    (3, 'Will');


  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 PostgreSQL để liệt kê tất cả các tên bảng?

  2. Biến bảng PostgreSQL

  3. Cách sử dụng EXECUTE FORMAT ... USING trong hàm postgres

  4. Cách bảo vệ cơ sở dữ liệu PostgreSQL của bạn khỏi các cuộc tấn công mạng bằng SQL Firewall

  5. Người dùng Postgres không tồn tại?