Hầu hết các RDBMS chính 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 phân tách dấu phẩy.
Đó là, chúng ta có thể sử dụng một hàm như vậy để chuyển đổi từng hàng thành một mục danh sách riêng biệt, trong danh sách phân tách dấu phẩy.
Dưới đây là những ví dụ về cách đạt được điều này trong một số RDBMS phổ biến hơn.
Mysql
MySQL có chức năng
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
5 cho phép chúng tôi xuất kết quả truy vấn của mình vào danh sách phân tách dấu phẩy:SELECT GROUP_CONCAT[PetName]
FROM Pets;
Result:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow
Chúng ta cũng có thể làm những việc như, xóa các giá trị trùng lặp [với mệnh đề
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
6], chỉ định một đơn đặt hàng cho kết quả [với mệnh đề SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
7] và chỉ định một dấu phân cách khác.Xem hàm
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
5 trong MySQL để biết thêm ví dụ.Cơ sở dữ liệu Oracle
Cơ sở dữ liệu Oracle có chức năng
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
9:SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
Result:
Hunold, Ernst, Austin, Pataballa, Lorentz
Giống như MySQL, cơ sở dữ liệu Oracle cũng cho phép chúng tôi xóa các giá trị trùng lặp, chỉ định một đơn đặt hàng cho kết quả, chỉ định một dấu phân cách khác, v.v.
Xem chức năng
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
9 trong Oracle để biết thêm ví dụ.Máy chủ SQL
SQL Server có chức năng
Hunold, Ernst, Austin, Pataballa, Lorentz1 để trả về kết quả của chúng tôi trong danh sách phân tách dấu phẩy:
SELECT STRING_AGG[Genre, ','] AS Result FROM Genres
Result:
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 một đơn đặt hàng 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 phân tách dấu phẩy trong SQL Server để biết thêm các ví dụ.
Mariadb
Giống như MySQL, Mariadb cũng có chức năng
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
5:SELECT GROUP_CONCAT[PetName]
FROM Pets;
Result:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow
Giống như hàm MySQL, cùng tên, chúng ta cũng có thể làm những việc như, xóa các giá trị trùng lặp [với mệnh đề
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
6], chỉ định một thứ tự cho kết quả [với mệnh đề SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
7], thay đổi dấu phân cách, v.v.Tuy nhiên, một điều mà Mariadb có trên MySQL là mệnh đề
Hunold, Ernst, Austin, Pataballa, Lorentz5, 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
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
5 để biết thêm ví dụ.Postgresql
Postgres có chức năng
Hunold, Ernst, Austin, Pataballa, Lorentz1:
SELECT STRING_AGG[PetName, ',']
FROM Pets;
Result:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow
Chúng ta cũng có thể xóa các giá trị trùng lặp [với mệnh đề
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
6], chỉ định một đơn đặt hàng cho kết quả [với mệnh đề SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
7], thay đổi dấu phân cách, v.v.Xem hàm
Hunold, Ernst, Austin, Pataballa, Lorentz1 trong PostgreSQL để biết thêm ví dụ.
Sqlite
Trong SQLite, chúng tôi có thể sử dụng chức năng
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
5 để chuyển đổi kết quả truy vấn của chúng tôi thành danh sách phân tách dấu phẩy:Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow0
Result:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow1
Xem cách
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
5 hoạt động trong sqlite để biết thêm ví dụ.Nhiều cột
Tất cả 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ể kết hợp nhiều cột để tạo 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:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow2
Result:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow3
Trong SQL Server, chúng ta có thể thực hiện các phần sau để xuất cả hai cột trong một hàng duy nhất:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow4
Result:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow5
Tôi có hai bàn: Dish và Dish_has_dishes. Bàn bát đĩa có tất cả các món ăn và bàn "Dish_has_dishes" có mối quan hệ một-nhiều với bảng "Dish". I E. Một món ăn có thể có nhiều món ăn. Ví dụ
MÓN ĂN : :
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow6
Dish_has_dishes: :
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow7
Ở đây, cả bữa ăn_id và Dish_id đều là ID từ bàn bát đĩa. Bây giờ tôi muốn một định dạng như thế này:
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow8
Đó là dấu phẩy phân tách ID Dish và tên cho mỗi bữa ăn. Làm thế nào để làm điều đó?
Để kết hợp nhiều hàng vào danh sách được phân định dấu phẩy, hãy sử dụng phương thức Group_concat []. Trước tiên chúng ta hãy tạo một bảng -
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow9
Chèn một số bản ghi trong bảng bằng lệnh chèn -
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
0Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh chọn -
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
1Đầu ra
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
2Sau đây là truy vấn để kết hợp nhiều hàng vào danh sách được phân định dấu phẩy trong MySQL -
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
3Đầu ra
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
4
Sau đây là truy vấn để kết hợp nhiều hàng vào danh sách được phân định dấu phẩy trong MySQL -
- Cập nhật vào ngày 30 tháng 3 năm 2019 22:30:26
- Câu hỏi và câu trả lời liên quan
- MySQL Chọn các hàng riêng biệt vào cột Danh sách được phân định dấu phẩy?
- Làm thế nào để thu gọn các hàng vào một danh sách phân loại bằng dấu phẩy với một truy vấn MYSQL duy nhất?
- Thay thế các số trên kết quả được phân định dấu phẩy bằng MySQL?
- Kết hợp nhiều hình ảnh thành một hình ảnh duy nhất bằng cách sử dụng JavaScript
- C# Chương trình để chuyển đổi một số chuỗi thành một chuỗi được phân phối bằng dấu phẩy
- Phân tích phân tích một std :: chuỗi được phân tách bằng dấu phẩy trong C ++
- Chương trình PHP để phân chia chuỗi được phân định dấu phẩy nhất định thành một mảng các giá trị
- Tìm các hàng có khớp trong cột được phân định đường ống với MySQL
- Chuyển đổi chuỗi thành danh sách phân tách bằng dấu phẩy trong Java
- In một vector trong danh sách phân loại bằng dấu phẩy, theo chỉ mục và được bao quanh bởi dấu ngoặc vuông [[]] trong Java
- Trả lại danh sách từ các hàng khác nhau vào một trường duy nhất với MySQL
- Chèn nhiều hàng trong MySQL?
- Kết hợp hai loạt thành một khung dữ liệu trong gấu trúc
- Chèn nhiều hàng vào một truy vấn MySQL duy nhất