Trong MariaDB, chúng ta có thể sử dụng GROUP_CONCAT()
chức năng trả về kết quả truy vấn của chúng tôi dưới dạng danh sách được phân tách bằng dấu phẩy. Ý tôi là, đối với một cột nhất định, chúng ta có thể chuyển đổi tất cả các hàng thành một hàng duy nhất chứa danh sách các giá trị được phân tách bằng dấu phẩy của các giá trị tạo nên cột đó. Mỗi hàng là một mục riêng biệt trong danh sách.
Ví dụ
Giả sử chúng ta chạy truy vấn sau:
SELECT meal
FROM guest_meals;
Kết quả:
+---------+ | meal | +---------+ | Salad | | Fish | | Burrito | | Pasta | | Salad | | Salad | +---------+ 6 rows in set (0.001 sec)
Truy vấn đó dẫn đến sáu hàng.
Chúng ta có thể chuyển đổi các hàng đó thành một hàng được phân tách bằng dấu phẩy như sau:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
Kết quả:
+--------------------------------------+ | GROUP_CONCAT(meal) | +--------------------------------------+ | Salad,Fish,Burrito,Pasta,Salad,Salad | +--------------------------------------+ 1 row in set (0.003 sec)
Thay đổi Dấu phân cách
Chúng ta có thể chỉ định dấu phân tách của riêng mình bằng cách chuyển nó vào hàm, có tiền tố là SEPARATOR
từ khóa:
SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
Kết quả:
Salad + Fish + Burrito + Pasta + Salad + Salad
Sắp xếp kết quả
Chúng tôi có thể sắp xếp kết quả bằng cách sử dụng ORDER BY
mệnh đề trong hàm:
SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
Kết quả:
Burrito,Fish,Pasta,Salad,Salad,Salad
Chỉ trả lại các giá trị duy nhất
Chúng tôi có thể sử dụng DISTINCT
mệnh đề chỉ trả về các giá trị duy nhất:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
Kết quả:
Burrito,Fish,Pasta,Salad
Giới hạn kết quả
Chúng tôi có thể sử dụng LIMIT
điều khoản giới hạn số lượng mục trong danh sách:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
Kết quả:
Burrito,Fish,Pasta
Truy vấn được nhóm
GROUP_CONCAT()
chức năng có thể hữu ích khi chạy các truy vấn được nhóm. Xem MariaDB GROUP_CONCAT()
để làm ví dụ.