我遇到GROUP_CONCAT问题并将结果导出到csv。
考虑下表
搜索结果
用列搜索Id |说明|投票|搜索类别
and consider the following data in the table
1|java, beans|2|java
2|serialization|3| java
3|jquery| 1|javascript
4|mysql joins|5| database
我需要以下格式输出
Search Category| description1 | description 2 | votes 1 | votes 2
java |java,beans | serialization | 2 | 3
javascript |jquery | | 1
database | mysqljoins | | 5
我需要将此数据输出到csv文件中。
我写了以下查询 通过search_category从search_results组中选择类别,GROUP_CONCAT(描述),GROUP_CONCAT(投票)到outfile'/tmp/out.csv'以',''括起来的字段,用“\ n”封闭的'''行包围;
但是,以下是问题 - 上面的查询返回一列用于描述和投票,显示逗号分隔值。我需要为每个值分别列(如所需的输出所示) - 对于类别javascript,输出以
格式返回javascript|jquery|5<br/>
我需要以格式输出
JavaScript的| jQuery的| | 5 | |
应该有空值的占位符
答案 0 :(得分:0)
SELECT
s1.search_category
, s1.description AS description1
, ISNULL(s2.description, '') AS description2
, s1.votes AS votes1
, ISNULL(s2.votes, '') AS votes2
FROM search_results AS s1
LEFT OUTER JOIN search_results AS s2 ON s2.search_category = s1.search_category
WHERE s1.search_id < s2.search_id
INTO OUTFILE ...
LEFT JOINING table to its self会给你第二列(如果有的话)。如果没有,则值为NULL,ISNULL将返回空格(或者您想要的任何其他内容)。
如果有超过2行具有相同的search_category,您将在输出中获得多行,这可能不是您所追求的。