我的表格如下:
+ ------- + -----------+ ------------ + --------- + ---------- + | Info_Id | category | EAN | Info_Type | Info_Value | + ------- + -----------+ ------------ + --------- + ---------- + | 1 | 1 | 0123456789 | brand | brand1 | | 2 | 1 | 0123456789 | type | type1 | | 3 | 1 | 0123456789 | price | 0.00 | | 4 | 2 | 9876543210 | brand | brand6 | | 5 | 2 | 9876543210 | type | type3 | | 6 | 2 | 9876543210 | price | 15.00 | | 7 | 2 | 6548214656 | brand | brand34 | | 8 | 2 | 6548214656 | type | type1 | | 9 | 2 | 6548214656 | price | 99.00 | | 10 | 3 | 245511411241 | brand | brand324 | | 11 | 3 | 245511411241 | type | type1 | | 12 | 3 | 245511411241 | price | 98.00 | + ------- + -----------+ ------------ + --------- + ---------- +
现在,我正在寻找一个创建以下输出的查询:
+ ------------ + ---------- + --------- + ---------- + ----------+ | EAN | category | brand | type | price | + ------------ + ---------- + --------- + ---------- + ----------+ | 0123456789 | 1 | brand1 | type1 | 0.00 | | 9876543210 | 2 | brand6 | type3 | 15.00 | | 6548214656 | 2 | brand34 | type1 | 99.00 | | etc. | etc. | etc. | etc. | etc. | + ------------ + ---------- + --------- + ---------- + --------- +
我有以下内容,但这似乎不起作用:
SELECT ean, GROUP_CONCAT(Info_Type) AS Info_Type, GROUP_CONCAT(Info_Value) AS Info_Value FROM tablename WHERE category=2 GROUP BY EAN
然而,这给我提供了类似的东西:
+ ------------ + ---------------- + ------------------- + | EAN | Info_Type | Info_Value | + ------------ + ---------------- + ------------------- + | 0123456789 | brand,type,price | brand1,type1,0.00 | | 9876543210 | brand,type,price | brand6,type3,15.00 | | 6548214656 | brand,type,price | brand34,type1,99.00 | | etc. | etc. | etc. | + ------------ + ---------------- + ------------------- +
我该如何正确地做到这一点?
答案 0 :(得分:1)
我认为你只想要条件聚合:
xlOff
答案 1 :(得分:0)
您必须修改每个 GROUP_CONCAT :
SELECT ean,
GROUP_CONCAT(IF(Info_Type = 'type' ,Info_Type,'')) AS 'type',
GROUP_CONCAT(IF(Info_Type = 'price' ,Info_Type,'')) AS 'price'
FROM tablename WHERE category=2
GROUP BY EAN;