我有一张表,其中包含每种产品的尺寸和价格。价格可能有多种尺寸。我希望读取尺寸和价格,并将“:”分开,每个尺寸:每个产品的价格用逗号分隔。
如果我使用SQL查询读取它,我得到以下内容。
PRODUCT_ID SIZE PRICE
001 L 20
001 S 15
002 M 10
002 L 20
002 S 5
我想阅读以下内容:
PRODUCT SIZE_PRICE
001 L:20,S:15
002 M:10,L:20,S:5
做这个的最好方式是什么 ?
您可以尝试使用group_concat
和CONCAT
架构(MySQL v5.7)
CREATE TABLE T(
PRODUCT_ID varchar(50),
SIZE varchar(50),
PRICE int
);
INSERT INTO T VALUES ('001','L',20);
INSERT INTO T VALUES ('001','S',15);
INSERT INTO T VALUES ('002','M',10);
INSERT INTO T VALUES ('002','L',20);
INSERT INTO T VALUES ('002','S',5);
查询#1
SELECT PRODUCT_ID,
GROUP_CONCAT(CONCAT(SIZE,':',PRICE)) 'SIZE_PRICE'
FROM T
GROUP BY PRODUCT_ID;
| PRODUCT_ID | SIZE_PRICE |
| ---------- | ------------- |
| 001 | L:20,S:15 |
| 002 | M:10,L:20,S:5 |