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
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
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
0Trong 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
1Group_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
2Trong 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
3Tiề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
5Sau 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.
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ả