mysql行到列,文本类型

时间:2010-08-27 16:36:16

标签: sql mysql pivot

如果我有一个数据表,如

Option_id|Component_id|Option_parent|Option_name|Option_value
1         1            0             id          
2         1            1             option1     Some value
3         1            1             option2     Other
4         1            0             id          Value
5         1            4             option1     More
6         1            4             option2     More&More

在提供“option_name”和component_id时,是否可以返回带有option_name作为列的行。带有“id”的option_name将是使用它的“option_id”的父级。

So Select option1, option2 where Component_id = 1 returns

Option1    |Option2
Some Value  Other
More        More&More

我基本上试图看看我是否可以拥有一个通用表,组件可以使用它来存储不同数量的数据。我知道我可以使用连接但是想知道是否有更好的方法,因为一个组件可以有10个选项。

1 个答案:

答案 0 :(得分:1)

使用:

  SELECT MAX(CASE WHEN t.option_name = 'option1' THEN t.option_value END) AS option1,
         MAX(CASE WHEN t.option_name = 'option2' THEN t.option_value END) AS option2
    FROM TABLE t
   WHERE t.option_name IN ('option1', 'option2')
GROUP BY t.component_id, t.option_parent