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

PostgreSQL GROUP_CONCAT () Tương đương

Một số RDBMS như MySQL và MariaDB có GROUP_CONCAT() cho phép bạn trả về cột truy vấn dưới dạng danh sách được phân tách (ví dụ:danh sách được phân tách bằng dấu phẩy).

PostgreSQL có một chức năng tương tự được gọi là STRING_AGG() . Hàm này hoạt động khá giống với GROUP_CONCAT() hoạt động trong MySQL và MariaDB.

Ví dụ

Dưới đây là một ví dụ cơ bản để chứng minh cách STRING_AGG() của PostgreSQL chức năng hoạt động:

SELECT STRING_AGG(genre, ',') FROM Genres;

Kết quả:

Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk

Đây là những gì sẽ xảy ra khi chúng tôi chỉ thực hiện truy vấn mà không có STRING_AGG() chức năng:

SELECT genre FROM Genres;

Kết quả:

+---------+
|  genre  |
+---------+
| Rock    |
| Jazz    |
| Country |
| Pop     |
| Blues   |
| Hip Hop |
| Rap     |
| Punk    |
+---------+
(8 rows)

Chúng tôi nhận được tám hàng, mỗi hàng có một giá trị riêng biệt, thay vì một hàng dài được phân tách bằng dấu phẩy của tất cả các giá trị.

Nếu có gì thì STRING_AGG() của PostgreSQL giống GROUP_CONCAT() của MySQL hơn so với chức năng cùng tên của MariaDB. Tôi nói điều này vì GROUP_CONCAT() của MariaDB cho phép chúng tôi cung cấp LIMIT mệnh đề (như từ MariaDB 10.3.3), ngay từ bên trong chính hàm. MySQL GROUP_CONCAT() không hỗ trợ LIMITSTRING_AGG() của PostgreSQL cũng vậy chức năng (ít nhất, không phải tại thời điểm viết bài này).

Một điểm khác biệt nữa là STRING_AGG() của PostgreSQL yêu cầu đối số thứ hai (chỉ định dấu phân cách để sử dụng). Cả MySQL và MariaDB đều làm điều này tùy chọn với GROUP_CONCAT() của chúng các chức năng.

STRING_AGG() của Postgres chấp nhận ORDER BY và một DISTINCT mệnh đề (cũng như MariaDB và MySQL của GROUP_CONCAT() chức năng).

Xem STRING_AGG() Hàm trong PostgreSQL để biết thêm ví dụ.

Và trong trường hợp bạn quan tâm, SQL Server cũng có STRING_AGG() chức năng hoạt động theo cùng một cá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. Cách make_timestamptz () hoạt động trong PostgreSQL

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

  3. Chạy các truy vấn PostgreSQL từ dòng lệnh

  4. Có phím tắt nào cho SELECT * FROM không?

  5. Công bố repmgr 2.0