3

テーブルから一連の行を選択し、結果を行の ID でグループ化する MySQL SELECT ステートメントを作成しようとしています (複数の行が同じ ID を持つことになります)。

これが私がやろうとしていることの例です。次のテーブルがあるとします。

id     |     name  
1      |     Art  
1      |     Arnold  
1      |     Anatoly  
2      |     Beatrice  
2      |     Bertha  
2      |     Betty  
3      |     Constantine  
3      |     Cramer  

次のように、MySQL に id でグループ化されたデータを返してもらいたいと思います。

[1] => Art, Arnold, Anatoly
[2] => Beatrice, Bertha, Betty
[3] => Constantine, Cramer

単純な SQL 選択を実行してから、PHP で結果をループできることはわかっていますが、可能であれば MySQL にグループ化を処理させたいと考えています。

4

1 に答える 1

4

考えられる解決策の 1 つは、MySQL のGROUP_CONCAT(expr)関数を使用することです。

SELECT
  GROUP_CONCAT(name)
FROM
  foo
GROUP BY
  id

ただし、次の点に注意してください。

結果は、 group_concat_max_len システム変数 (デフォルト値は 1024)によって指定される最大長に切り捨てられます。
于 2010-04-26T23:25:18.707 に答える