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

Cách trả về kết quả truy vấn dưới dạng danh sách được phân tách bằng dấu phẩy trong PostgreSQL

Trong Postgres, chúng tôi có thể sử dụng STRING_AGG() chức năng chuyển đổi kết quả truy vấn của chúng tôi thành một danh sách được phân tách bằng dấu phẩy.

Thay vì mỗi giá trị được xuất trong một hàng riêng biệt (như với bất kỳ truy vấn thông thường nào), các giá trị được xuất thành một hàng duy nhất, được phân tách bằng dấu phẩy (hoặc một số dấu phân cách khác mà chúng tôi chọn).

Ví dụ

Hãy tưởng tượng chúng ta chạy truy vấn sau:

SELECT * 
FROM Genres;

Kết quả:

+---------+---------+
| genreid |  genre  |
+---------+---------+
|       1 | Rock    |
|       2 | Jazz    |
|       3 | Country |
|       4 | Pop     |
|       5 | Blues   |
|       6 | Hip Hop |
|       7 | Rap     |
|       8 | Punk    |
+---------+---------+
(8 rows)

Chúng tôi có thể chạy truy vấn sau để xuất ra genre cột dưới dạng danh sách được phân tách bằng dấu phẩy:

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

Kết quả:

+-----------------------------------------------------+
|                     string_agg                      |
+-----------------------------------------------------+
| Rock, Jazz, Country, Pop, Blues, Hip Hop, Rap, Punk |
+-----------------------------------------------------+
(1 row)

Chúng tôi thậm chí có thể bao gồm GenreId trong danh sách của chúng tôi nếu chúng tôi muốn:

SELECT STRING_AGG(CONCAT(GenreId, ') ', Genre), ' ' ORDER BY GenreId ASC) 
FROM Genres;

Kết quả:

1) Rock 2) Jazz 3) Country 4) Pop 5) Blues 6) Hip Hop 7) Rap 8) Punk

Ở đây, tôi cũng đã sử dụng ORDER BY mệnh đề trong STRING_AGG() để sắp xếp kết quả theo GenreId theo thứ tự tăng dần.

Chúng tôi cũng có thể làm những việc như xóa các bản sao (với DISTINCT mệnh đề), sử dụng một dấu phân tách khác và sử dụng hàm trong một truy vấn được nhóm.

Xem STRING_AGG() Hàm trong PostgreSQL để làm ví dụ.


  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 tôi có thể đảm bảo rằng một chế độ xem cụ thể hóa luôn được cập nhật?

  2. Bảng lừa cấu hình PostgreSQL

  3. Spark Dataframes UPSERT to Postgres Table

  4. Làm cách nào để hợp nhất các cột từ hai bảng thành một đầu ra?

  5. Chuyển từ MySQL sang PostgreSQL - mẹo, thủ thuật và mẹo gì?