首页 文章

MySQL将多行作为列返回

提问于
浏览
2

我对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 / ANY子查询'中出现了像未知列col3一样的错误我无法弄清楚如何在结果的第一行中获取列名称以及如何使用group by来添加列 . 有帮助吗?

1 回答

  • 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 语句等) .

相关问题