Hàng MySQL thành cột GROUP_CONCAT

Hôm nay, chúng tôi muốn chia sẻ với bạn Concat Multiple MySQL Rows GROUP_CONCAT. Trong bài đăng này, chúng tôi sẽ chỉ cho bạn Kết hợp nhiều hàng con thành một hàng MYSQL, hãy nghe phần Chọn nhiều hàng và Kết hợp / Chèn vào một hàng bằng MYSQL, chúng tôi sẽ cung cấp cho bạn bản demo và ví dụ để thực hiện. Trong bài đăng này, chúng ta sẽ tìm hiểu về Ghép nhiều hàng MySQL vào một trường bằng cách sử dụng GROUP_CONCAT với một ví dụ

Nối nhiều hàng MySQL GROUP_CONCAT

nội dung

  • Nối nhiều hàng MySQL GROUP_CONCAT
    • Trong bảng MySQL
    • Với bảng MySQL khác
    • Ví dụ Mysql group_concat nhiều cột
    • Đọc
    • Tóm lược
    • Bài viết liên quan

Có những điều sau đây Đơn giản Giới thiệu về Concat Nhiều hàng MySQL GROUP_CONCAT Thông tin đầy đủ với ví dụ và mã nguồn

Vì tôi sẽ giới thiệu Bài đăng này với ví dụ Hoạt động trực tiếp để phát triển MySQL Concat Multiple Rows into A Single Row, do đó, mysql – Kết hợp nhiều hàng thành một cột cho ví dụ này như sau

MySQL đơn giản Kết hợp nhiều hàng thành một hàng MySQL duy nhất ít muốn điều hơn trong khi truy vấn Mysql đơn giản

Trong bài viết trước, tôi đã hướng dẫn cách nhóm các hàng thành một mảng hoặc một tập hợp trong Hive. Bài đăng trên blog này trình bày cách đạt được kết quả tương tự trong MySQL

Như trong bài viết đã nói ở trên, chúng ta có bảng sau

1
2
3
4
5
6
7
C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1

và chúng tôi muốn có được kết quả này

1
2
3
AAA AA1, AA2, AA2
BBB BB1, BB2
CCC CC1

Trong MySQL, thay vì các hàm

C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
4 hoặc
C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
5, chúng ta sẽ sử dụng hàm
C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
6. Chúng ta phải nhóm các hàng theo cột C1 và nối cột C2

1
2
3
SELECT C1, GROUP_CONCAT(C2 SEPARATOR ', ')
FROM some_table
GROUP BY C1;

Nếu chúng tôi muốn loại bỏ các giá trị trùng lặp, chúng tôi sẽ phải thêm hoạt động

C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
7 để làm cho truy vấn trông như thế này

1
2
3
C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
1

Chúng ta có thể sử dụng ORDER BY

Trong MySQL, việc sắp xếp các giá trị C2 là tầm thường. Tất cả những gì chúng ta phải làm là thêm mệnh đề

C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
8 vào bên trong hàm
C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
6

1
2
3
C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
5

Coi chừng giới hạn bộ nhớ

Thật không may, hàm

C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
6 sẽ không trả về chuỗi dài hơn giá trị mặc định của tham số
1
2
3
1 (1024 byte). Chúng ta có thể thay đổi điều đó bằng cách đặt tham số trước khi thực hiện câu lệnh chọn có chứa hàm
C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
6

C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
0
C1  C2
AAA AA1
AAA AA2
AAA AA2
BBB BB1
BBB BB2
CCC CC1
1

Nếu chúng tôi không chắc chắn độ dài cần thiết mà chúng tôi cần là gì, chúng tôi phải tính tổng độ dài C2 và độ dài của số lượng dấu phân cách cần thiết

Đôi khi, dữ liệu của bạn có thể được lưu trữ theo hàng và bạn có thể muốn báo cáo dưới dạng cột. Trong những trường hợp như vậy, bạn sẽ cần chuyển hàng thành cột. Đôi khi, ngay cả những hàng này cũng có thể thay đổi. Vì vậy, bạn có thể biết mình cần bao nhiêu cột. Trong những trường hợp như vậy, bạn cần chuyển đổi hàng sang cột một cách linh hoạt. Vì không có chức năng tích hợp sẵn để thực hiện điều đó trong MySQL, nên bạn cần hoàn thành nó bằng truy vấn SQL. Đây là một truy vấn SQL để tự động chuyển đổi hàng thành cột trong MySQL

 

Cách chuyển đổi hàng thành cột một cách linh hoạt trong MySQL

Đây là cách tạo bảng tổng hợp động trong MySQL. Giả sử bạn có bảng sau

1
2
3
1

Giả sử bạn muốn chuyển đổi hàng sang cột một cách linh hoạt, sao cho một cột mới được tạo cho mỗi giá trị duy nhất trong cột field_key, nghĩa là (tên_họ, họ_tên, nghề nghiệp)

 

1
2
3
2

 

Tự động chuyển hàng sang cột

Nếu bạn đã biết trước mình sẽ tạo cột nào, bạn chỉ cần sử dụng câu lệnh CASE để tạo bảng tổng hợp

Vì chúng tôi không biết cột nào sẽ được tạo, chúng tôi sẽ phải tự động chuyển đổi hàng thành cột bằng cách sử dụng hàm GROUP_CONCAT, như được hiển thị bên dưới

1
2
3
3

GROUP_CONCAT cho phép bạn nối các giá trị field_key từ nhiều hàng thành một chuỗi. Trong truy vấn trên, chúng tôi sử dụng GROUP_CONCAT để tạo động các câu lệnh CASE, dựa trên các giá trị duy nhất trong cột field_key và lưu trữ chuỗi đó trong biến @sql, sau đó được sử dụng để tạo truy vấn chọn của chúng tôi

1
2
3
4

Đây là cách bạn có thể tự động hóa các truy vấn bảng tổng hợp trong MySQL và chuyển đổi hàng sang cột một cách linh hoạt

 

Bạn có thể tùy chỉnh truy vấn trên theo yêu cầu của mình bằng cách thêm mệnh đề WHERE hoặc THAM GIA

 

Nếu bạn chỉ muốn chuyển đổi các giá trị hàng đã chọn thành cột, bạn có thể thêm mệnh đề WHERE vào câu lệnh GROUP_CONCAT chọn đầu tiên của mình

1
2
3
5

Cũng đọc. Cách hủy bảng trong MySQL

 

Nếu bạn muốn lọc các hàng trong bảng tổng hợp cuối cùng của mình, bạn có thể thêm mệnh đề WHERE vào câu lệnh SET của mình

1
2
3
6

Tương tự, bạn cũng có thể áp dụng THAM GIA trong truy vấn SQL của mình trong khi chuyển đổi hàng thành cột một cách linh hoạt trong MySQL

Đây là một ví dụ về bảng tổng hợp được tạo bằng Ubiq

Hàng MySQL thành cột GROUP_CONCAT

 

Nếu bạn muốn tạo bảng tổng hợp, biểu đồ, bảng điều khiển & báo cáo từ cơ sở dữ liệu MySQL, bạn có thể thử Ubiq. Chúng tôi cung cấp bản dùng thử miễn phí 14 ngày

Sự khác biệt giữa concat và Group_concat trong MySQL là gì?

Sự khác biệt ở đây là trong khi CONCAT được sử dụng để kết hợp các giá trị trên các cột, GROUP_CONCAT cung cấp cho bạn khả năng kết hợp các giá trị trên các hàng . Cũng cần lưu ý rằng cả GROUP_CONCAT và CONCAT đều có thể được kết hợp để trả về kết quả mong muốn.

Làm cách nào để sử dụng Group_concat trong PostgreSQL?

Hàm group_concat hoạt động như thế nào trong PostgreSQL? .
Về cơ bản, chức năng group_concat không có sẵn trong PostgreSQL có sẵn trong MySQL. Thay vì sử dụng group_concat trong PostgreSQL, chúng tôi đang sử dụng hàm array_to_string và array_agg
Hàm Array_agg về cơ bản được sử dụng để truy xuất phần tử của mảng từ bảng

Làm cách nào để nối các giá trị trong một cột trong MySQL?

CONCAT. Hàm này được sử dụng để nối nhiều cột hoặc chuỗi thành một cột duy nhất. .
CONCAT_WS. Hàm CONCAT_WS() không chỉ thêm nhiều giá trị chuỗi và biến chúng thành một giá trị chuỗi đơn. .
Sử dụng chúng trong KHOẢN WHERE. Bạn có thể sử dụng cả hai trong KHOẢN WHERE để lựa chọn dựa trên điều kiện. .
Phần kết luận

Làm cách nào để sử dụng Group_concat trong Oracle?

Hàm GROUP_CONCAT có thể được định nghĩa là một hàm tổng hợp (GROUP BY) trong oracle nối (có nghĩa là liên kết với nhau) tất cả các chuỗi trong một nhóm, theo một thứ tự nhất định, phân tách chúng bằng một dấu tách nhất định và nó trả về kết quả của một chuỗi dữ liệu