【发布时间】:2012-03-01 11:41:45
【问题描述】:
这两天我一直在努力尝试将 MySQL 查询放在一起以将一些数据放在一起。然而,这超出了我对 SQL 的经验水平。
以下查询提取了我需要的数据,但我需要对其进行不同的格式化,以便可以使用它。
SELECT b.key, a.author, a.comment FROM action a, issue b
WHERE a.issueid=b.id AND a.actiontype='comment';
这会产生如下输出:
1 | joe | comment 3
3 | sally | comment 2
1 | sam | comment 2
2 | julie | comment 2
1 | bill | comment 1
3 | joe | comment 1
2 | sam | comment 1
b.key 是唯一的,可以包含 0-∞ a.comment。与 a.author 和 a.comment 是 1-1 的关系,我必须保持原来的关联。输出似乎是根据 a.comment 的日期升序排列的。
我希望将数据转换为以下格式 (CSV),将 a.author 和 a.comment 结果合并到一个列中:
"1", "bill - comment 1", "sam - comment 2", "joe - comment 1"
"2", "julie - comment 1", "sam - comment 2"
"3", "joe - comment 1", "sally - comment 2"
我玩弄了 GROUP_CONCAT 和 ORDER 的几种组合,还根据this 发布了一些子查询,似乎无法按照我需要的方式对其进行格式化。此外,评论栏的顺序似乎发生了变化。我需要维护原始(从最旧到最新)顺序,但是我上面的原始查询会以最新到最旧的顺序产生结果。如果分隔符有问题,我当然可以使用 perl 或 awk 搜索和替换结果进行一些后期处理。非常感谢任何帮助!
【问题讨论】:
-
在 MySQL 中绝对有必要这样做吗?如果没有,您可能会发现使用通用语言会更容易。
标签: mysql csv group-concat