mysql在一个结果中的多行中排一个表

时间:2017-03-25 13:27:01

标签: mysql sql

我的表格如下:


    + ------- + -----------+ ------------ + --------- + ---------- +
    | 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.                |
    + ------------ + ---------------- + ------------------- +

我该如何正确地做到这一点?

2 个答案:

答案 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;