0

GROUP_CONCAT の問題に直面しており、結果を csv にエクスポートしています。

次のテーブルの
検索結果
を検討してください。説明 | 投票 | 検索カテゴリ

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 ファイルに出力する必要があります。

次のクエリ select category, GROUP_CONCAT(description), GROUP_CONCAT(votes) from search_results group by search_category を outfile '/tmp/out.csv' フィールドに ',' で終了し、'"' で終了する行を '\n で終了します';

ただし、次の問題があります。上記のクエリは、カンマ区切りの値を表示する説明と投票に対してそれぞれ 1 つの列を返します。値ごとに個別の列が必要です(目的の出力に示されているように)-カテゴリjavascriptの場合、出力は次の形式で返されます

javascript|jquery|5<br/>

javascript|jquery| の形式で出力する必要があります。| | 5| | |

空の値のプレースホルダーが必要です

4

1 に答える 1

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 JOIN すると、2 番目の列があればそれが表示されます。存在しない場合、値は NULL になり、ISNULL はスペース (または必要なもの) を返します。

同じ search_category を持つ行が 2 つ以上ある場合、出力に複数の行が表示されますが、これは目的とは異なる可能性があります。

于 2012-08-14T13:19:46.573 に答える