GROUP_CONCAT问题并输出到csv

时间:2012-08-14 12:12:41

标签: mysql

我遇到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 | |

应该有空值的占位符

1 个答案:

答案 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,您将在输出中获得多行,这可能不是您所追求的。