MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách đưa nhiều hàng vào danh sách được phân tách bằng dấu phẩy trong SQL

Hầu hết các RDBMS chính đều có chức năng cho phép chúng tôi trả về kết quả truy vấn của mình dưới dạng danh sách được phân tách bằng dấu phẩy.

Nghĩa là, chúng ta có thể sử dụng một hàm như vậy để chuyển đổi mỗi hàng thành một mục danh sách riêng biệt, trong một danh sách được phân tách bằng dấu phẩy.

Dưới đây là các ví dụ về cách đạt được điều này trong một số RDBMS phổ biến hơn.

MySQL

MySQL có GROUP_CONCAT() cho phép chúng tôi xuất kết quả truy vấn của mình trong một danh sách được phân tách bằng dấu phẩy:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Kết quả:

Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

Chúng tôi cũng có thể làm những việc như xóa các giá trị trùng lặp (với DISTINCT ), chỉ định thứ tự cho các kết quả (với ORDER BY mệnh đề), và chỉ định một dấu phân cách khác.

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

Cơ sở dữ liệu Oracle

Cơ sở dữ liệu Oracle có LISTAGG() chức năng:

SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

Kết quả:

Hunold, Ernst, Austin, Pataballa, Lorentz    

Giống như MySQL, Cơ sở dữ liệu Oracle cũng cho phép chúng tôi loại bỏ các giá trị trùng lặp, chỉ định thứ tự cho kết quả, chỉ định dấu phân tách khác, v.v.

Xem LISTAGG() Hàm trong Oracle để có thêm ví dụ.

Máy chủ SQL

Máy chủ SQL có STRING_AGG() chức năng trả về kết quả của chúng tôi trong một danh sách được phân tách bằng dấu phẩy:

SELECT STRING_AGG(Genre, ',') AS Result FROM Genres

Kết quả:

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

Chúng tôi cũng có thể xóa các giá trị trùng lặp, chỉ định thứ tự cho kết quả, thay đổi dấu phân cách, v.v.

Xem 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 SQL Server để biết thêm ví dụ.

MariaDB

Giống như MySQL, MariaDB cũng có GROUP_CONCAT() chức năng:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Kết quả:

Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

Giống như hàm cùng tên của MySQL, chúng ta cũng có thể thực hiện những việc như xóa các giá trị trùng lặp (với DISTINCT ), chỉ định thứ tự cho các kết quả (với ORDER BY mệnh đề) , thay đổi dấu phân tách, v.v.

Tuy nhiên, một thứ mà MariaDB có trên MySQL là LIMIT , cung cấp cho chúng tôi khả năng giới hạn số lượng kết quả trong danh sách.

Xem MariaDB GROUP_CONCAT() để biết thêm ví dụ.

PostgreSQL

Postgres có STRING_AGG() chức năng:

SELECT STRING_AGG(PetName, ',') 
FROM Pets;

Kết quả:

Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

Chúng tôi cũng có thể xóa các giá trị trùng lặp (với DISTINCT ), chỉ định thứ tự cho các kết quả (với ORDER BY mệnh đề), thay đổi dấu phân cách, v.v.

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

SQLite

Trong SQLite, chúng ta có thể sử dụng GROUP_CONCAT() 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:

SELECT group_concat(FirstName)
FROM Employee;

Kết quả:

Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura

Xem Cách thực hiện GROUP_CONCAT() Hoạt động trong SQLite để biết thêm ví dụ.

Nhiều cột

Các ví dụ trên đều sử dụng một cột duy nhất cho danh sách. Chúng tôi cũng có thể nối nhiều cột để tạo ra một danh sách bao gồm nhiều cột.

Giả sử chúng ta có một bảng với dữ liệu sau:

SELECT TaskId, TaskName 
FROM Tasks;

Kết quả:

TaskId  TaskName    
------  ------------
1       Feed cats   
2       Water dog   
3       Feed garden 
4       Paint carpet
5       Clean roof  
6       Feed cats   

Trong SQL Server, chúng ta có thể làm như sau để xuất cả hai cột trong một hàng:

SELECT STRING_AGG(CONCAT(TaskId, ') ', TaskName), ' ') 
FROM Tasks

Kết quả:

1) Feed cats 2) Water dog 3) Feed garden 4) Paint carpet 5) Clean roof 6) Feed cats

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Quản lý MySQL, MongoDB &PostgreSQL với ChatOps từ Slack

  2. cách nhóm trong mongoDB và trả về tất cả các trường trong kết quả

  3. Mongoid hay MongoMapper?

  4. MongoDB Mối quan hệ một đến nhiều

  5. Hướng dẫn sử dụng MongoDB cho năm 2022 - Tìm hiểu MongoDB là gì?