Hướng dẫn mysql combine multiple rows into multiple columns - mysql kết hợp nhiều hàng thành nhiều cột

Nếu tôi có bảng MySQL trông giống như thế này: ví dụ 2014000 là bút sản phẩm, có bốn loại ABCD với giá khác nhau. Và 2014001 là một điện thoại prodCT khác, cũng có ba loại EFG với giá khác nhau. Bây giờ tôi muốn có được một sản phẩm một dòng với tên và giá trị.

id       code         name       value

1      2014000          A          10

2      2014000          B          9

3      2014000          C         11

4      2014000          D        12

5      2014001          E        100 

6      2014001          F        110

7     2014001           G        120

Kết quả tôn trọng :

         code              name1                  value1                 name2              value2               name3              value3             name4              value4  

         -----------       ---------              ---------          ---------              ---------   -----------       ---------              ---------          ---------              
         2014000          A                      10                   B                     9                C                      11                   D                 12
         2014001          E                     100                   F                     110             G                      120                  null              null    

Tạo bảng T (ID int, mã int, tên char (1), varchar giá trị (10));

Chèn vào các giá trị T (1.2014000, 'A', '10'), (2.2014000, 'B', '9'), (3.2014000, 'C', '11'), (4.2014000 . );

----- Theo sau chỉ cho hai hàng, nếu có nhiều hơn bốn hàng, làm thế nào để làm điều đó?

SELECT    T1.code,     T2.name AS name1,     T2.value AS value1,     T3.name AS name2,     T3.value AS value2 FROM(     SELECT code,MIN(ID) AS ID1,CASE COUNT(code) WHEN 1 THEN NULL ELSE MAX(ID) END AS ID2 FROM T GROUP BY code ) T1 LEFT JOIN T T2 ON T1.ID1 = T2.ID LEFT JOIN T T3 ON T1.ID2 = T3.ID

Tôi đang cố gắng thực hiện một truy vấn thủ công cho bảng postmeta WordPress sẽ kết hợp hai loại postmeta thành một với nhiều cột của post_id.

Đây là cấu trúc của bảng:

--------------------------------------------------------
meta_id | post_id | meta_key                | meta_value
1       | 100     | _wp_attachment_metadata | a:6:{s:5:"width"}
2       | 100     | _thumbnail_id           | 23
`

Đây là kết quả tôi đang cố gắng đạt được:

--------------------------------------------------------
post_id | _wp_attachment_metadata | _thumbnail_id
100     | a:6:{s:5:"width"}       | 23

Rick James

71.2k4 Huy hiệu vàng40 Huy hiệu bạc98 Huy hiệu đồng4 gold badges40 silver badges98 bronze badges

Hỏi ngày 25 tháng 4 năm 2019 lúc 15:52Apr 25, 2019 at 15:52

Hướng dẫn mysql combine multiple rows into multiple columns - mysql kết hợp nhiều hàng thành nhiều cột

SELECT t1.post_id, t1.meta_value, t2.meta_value
FROM postmeta t1, postmeta t2
WHERE t1.post_id = t2.post_id
  AND t1.meta_key = '_wp_attachment_metadata'
  AND t2.meta_key = '_thumbnail_id'

hoặc

SELECT post_id, 
       MAX(CASE WHEN meta_key = '_wp_attachment_metadata' 
                THEN meta_value END), 
       MAX(CASE WHEN meta_key = '_thumbnail_id' 
                THEN meta_value END)
FROM postmeta 
GROUP BY post_id

PS. Truy vấn đầu tiên bỏ qua

         code              name1                  value1                 name2              value2               name3              value3             name4              value4  

         -----------       ---------              ---------          ---------              ---------   -----------       ---------              ---------          ---------              
         2014000          A                      10                   B                     9                C                      11                   D                 12
         2014001          E                     100                   F                     110             G                      120                  null              null    
6, nếu nó không có ai (bất kỳ) phím meta, truy vấn thứ hai cho null cho trường đầu ra trong trường hợp đó.

Đã trả lời ngày 25 tháng 4 năm 2019 lúc 18:07Apr 25, 2019 at 18:07

Hướng dẫn mysql combine multiple rows into multiple columns - mysql kết hợp nhiều hàng thành nhiều cột

AkinaakinaAkina

17.9k2 Huy hiệu vàng12 Huy hiệu bạc19 Huy hiệu đồng2 gold badges12 silver badges19 bronze badges

Đôi khi bạn có thể cần kết hợp nhiều hàng vào một cột. Tại đây, cách kết hợp nhiều hàng vào một cột trong hàm Group_concat. Bạn cũng có thể sử dụng nó để kết hợp các hàng vào chuỗi hoặc nhận nhiều dữ liệu hàng trong một hàng trong MySQL.

Dưới đây là các bước để nối nhiều hàng vào một cột trong MySQL.

Hãy nói rằng bạn có doanh số bán bảng sau (Sales_rep, Sale)

mysql> create table sales(sales_rep varchar(255),sale int);

mysql> insert into sales(sales_rep, sale) 
       values('Albert',10),('Bob',23),
             ('Chris',20),('Dave',35);

mysql> select * from sales;

+-----------+------+
| sales_rep | sale |
+-----------+------+
| Albert    |   10 |
| Bob       |   23 |
| Chris     |   20 |
| Dave      |   35 |
+-----------+------+

Tiền thưởng đọc: & nbsp; Cách tính tổng số chạy trong mysql

Hãy nói rằng bạn muốn báo cáo tất cả các đại diện bán hàng có bán hàng> 10 với truy vấn sau.

mysql> select sales_rep from sales where sale>10;

Bạn sẽ nhận được đầu ra sau

+-----------+
| sales_rep |
+-----------+
| Bob       |
| Chris     |
| Dave      |
+-----------+

Tuy nhiên, chúng tôi muốn các tên sales_rep có mặt trong một dòng duy nhất.

         code              name1                  value1                 name2              value2               name3              value3             name4              value4  

         -----------       ---------              ---------          ---------              ---------   -----------       ---------              ---------          ---------              
         2014000          A                      10                   B                     9                C                      11                   D                 12
         2014001          E                     100                   F                     110             G                      120                  null              null    
0

Trong trường hợp này, chúng tôi sử dụng chức năng nhóm_concat để nối nhiều hàng vào một cột.

         code              name1                  value1                 name2              value2               name3              value3             name4              value4  

         -----------       ---------              ---------          ---------              ---------   -----------       ---------              ---------          ---------              
         2014000          A                      10                   B                     9                C                      11                   D                 12
         2014001          E                     100                   F                     110             G                      120                  null              null    
1

Group_concat kết hợp tất cả các giá trị không null trong một nhóm và trả về chúng dưới dạng một chuỗi.

Nếu bạn muốn tránh trùng lặp, bạn cũng có thể thêm khác biệt trong truy vấn của mình. Hãy để nói rằng bạn có bảng sau.

         code              name1                  value1                 name2              value2               name3              value3             name4              value4  

         -----------       ---------              ---------          ---------              ---------   -----------       ---------              ---------          ---------              
         2014000          A                      10                   B                     9                C                      11                   D                 12
         2014001          E                     100                   F                     110             G                      120                  null              null    
2

Trong bảng trên, sản phẩm cột chứa các giá trị trùng lặp. Vì vậy, chúng tôi sử dụng từ khóa riêng biệt để chỉ chọn các giá trị duy nhất.

         code              name1                  value1                 name2              value2               name3              value3             name4              value4  

         -----------       ---------              ---------          ---------              ---------   -----------       ---------              ---------          ---------              
         2014000          A                      10                   B                     9                C                      11                   D                 12
         2014001          E                     100                   F                     110             G                      120                  null              null    
3

Tiền thưởng đọc: & nbsp; cách thêm tổng hàng trong mysql

Bạn cũng có thể sử dụng nhóm theo chức năng để kết hợp các giá trị hàng cho mỗi nhóm. Đây là một ví dụ. Hãy để nói rằng bạn có bảng sau.

         code              name1                  value1                 name2              value2               name3              value3             name4              value4  

         -----------       ---------              ---------          ---------              ---------   -----------       ---------              ---------          ---------              
         2014000          A                      10                   B                     9                C                      11                   D                 12
         2014001          E                     100                   F                     110             G                      120                  null              null    
4

Ở đây, một truy vấn nơi chúng tôi kết hợp tên đại diện cho từng sản phẩm, sử dụng nhóm theo mệnh đề.

         code              name1                  value1                 name2              value2               name3              value3             name4              value4  

         -----------       ---------              ---------          ---------              ---------   -----------       ---------              ---------          ---------              
         2014000          A                      10                   B                     9                C                      11                   D                 12
         2014001          E                     100                   F                     110             G                      120                  null              null    
5

Sau khi bạn kết hợp nhiều hàng vào một cột, bạn có thể sử dụng một công cụ báo cáo để vẽ kết quả trong bảng và chia sẻ chúng với nhóm của bạn. Ở đây, một ví dụ về một bảng được tạo bằng UBIQ.

Hướng dẫn mysql combine multiple rows into multiple columns - mysql kết hợp nhiều hàng thành nhiều cột

Nhân tiện, nếu bạn muốn tạo 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 một bản dùng thử miễn phí 14 ngày.

Bài viết liên quan:

  • về tác giả

Hướng dẫn mysql combine multiple rows into multiple columns - mysql kết hợp nhiều hàng thành nhiều cột

Làm cách nào để kết hợp nhiều hàng vào một cột trong SQL?

Bạn có thể nối các hàng vào chuỗi đơn bằng phương pháp hợp tác. Phương pháp hợp tác này có thể được sử dụng trong SQL Server phiên bản 2008 trở lên. Tất cả bạn phải làm là, khai báo một biến varchar và bên trong hợp tác, kết nối biến với dấu phẩy và cột, sau đó gán hợp tác cho biến.using COALESCE method. This COALESCE method can be used in SQL Server version 2008 and higher. All you have to do is, declare a varchar variable and inside the coalesce, concat the variable with comma and the column, then assign the COALESCE to the variable.

Làm cách nào để kết hợp nhiều hàng thành một trong MySQL?

Hàm group_concat () trong mysql được sử dụng để kết hợp dữ liệu từ nhiều hàng vào một trường. Đây là hàm tổng hợp (nhóm theo) trả về giá trị chuỗi, nếu nhóm chứa ít nhất một giá trị không null. Nếu không, nó trả lại null.GROUP_CONCAT() function in MySQL is used to concatenate data from multiple rows into one field. This is an aggregate (GROUP BY) function which returns a String value, if the group contains at least one non-NULL value. Otherwise, it returns NULL.

Làm cách nào để kết hợp nhiều hàng dữ liệu thành một hàng?

Để hợp nhất hai hoặc nhiều hàng thành một, đây là những gì bạn cần làm: chọn phạm vi của các ô mà bạn muốn hợp nhất các hàng.Chuyển đến tab Dữ liệu ABLEBITS> Hợp nhất nhóm, nhấp vào mũi tên Merge Cell, sau đó nhấp vào Hợp nhất hàng thành một.Go to the Ablebits Data tab > Merge group, click the Merge Cells arrow, and then click Merge Rows into One.

Làm cách nào để kết hợp nhiều cột thành một trong MySQL?

Liên kết.Hàm này được sử dụng để kết hợp nhiều cột hoặc chuỗi thành một cột.....
Concat_ws.Hàm Concat_ws () không chỉ thêm nhiều giá trị chuỗi và làm cho chúng trở thành một giá trị chuỗi đơn.....
Sử dụng chúng trong mệnh đề nơi.Bạn có thể sử dụng cả hai trong mệnh đề nơi lựa chọn dựa trên điều kiện.....
Conclusion..