MySQL将多行作为列返回

时间:2011-08-11 19:40:29

标签: mysql sql in-subquery

我对SQL有点生疏,我有一个简单的表

col1        col2        col3        col4
ident1      name1       data1       data3
ident2      name1       data8       data7
ident3      name1       data3       data8
...
ident1      name2       data4       data1
ident2      name2       data2       data5
ident3      name2       data6       data3
...

我希望以这种方式获得几列

        ident1  ident1  ident2  ident2  ident3  ident3 ...
name1   data1   data3   data8   data7   ...
name2   data4   data1   data2   data5   ...
name3   ....
...

请注意,这与MySQL: Returning multiple columns from an in-line subquery不同,因为我只有一个表,我想将第一列映射为结果中的第一行。

我已经读过这可以使用像SELECT ... WHERE(col3,col4)IN(SELECT col3,col4 ...)这样的子查询,但是我在'IN / ALL /'中遇到了像未知列col3这样的错误任何子查询'我无法弄清楚如何在结果的第一行中获取列名,以及如何使用group by来添加列。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

看起来像mdx。那些很棒。但这不是那些。但它们的存在是因为SQL(在所有类型中)只是。 (这也可能是您需要重新考虑架构的情况。)

个人?我会将其作为一系列查询和关联数组(伪代码跟随)。

select col1 from table -> iterate through result adding two copies of each to 
                          keys of an associative array

select col1, col2, col3, col4 from table -> output name. while name = first
                                            name output col3 then col4

你的另一个选择,我可以说,实际上应该在动态sql中完成(使用PREPARE语句等)。