【问题标题】:MySQL returning multiple rows as columnsMySQL返回多行作为列
【发布时间】:2011-08-11 19:40:28
【问题描述】:

我对 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 不同,因为我只有一个表,我想将第一列映射为结果中的第一行。

我已经读到这可以通过子查询来实现任何子查询',我无法弄清楚如何在结果的第一行中获取列名以及如何使用 group by 添加列。有什么帮助吗?

【问题讨论】:

  • 你想要一个 mysql 不支持的数据透视结果。您可以在脚本/程序中对结果进行后处理,并在那里进行数据透视操作。
  • 感谢您的建议,我对枢轴并不陌生

标签: mysql sql in-subquery


【解决方案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 语句等)。

【讨论】:

  • SQL 似乎不是此类任务的正确工具,感谢您提供的链接和建议。如果没有人给出更好的答案,我会用另一种编程语言编写代码。
猜你喜欢
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2011-12-01
  • 2016-05-12
相关资源
最近更新 更多