【发布时间】:2017-07-18 09:30:49
【问题描述】:
如果我的 MySQL 表看起来像这样:例如 2014000 是产品笔,则有四种类型 abcd 具有不同的价格。 2014001是另一种产品电话,也有三种不同价格的efg。现在我想得到一个具有名称和值的产品。
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
尊重结果:
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(ID INT,代码 INT,NAME CHAR(1),VALUE VARCHAR(10));
插入 T 值(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');
-----后面只有两行,如果多于四行怎么办?
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
【问题讨论】:
-
请仅使用与您的问题相关的标签并正确格式化您的问题。
-
MySQL pivot table的可能重复