0

私はこのようなテーブルを持っています

記録            
columnA columnB columnC columnD
ゲイリー20110a
ゲイリー20110b
ゲイリー20101a
メアリー20110a
メアリー20101b
メアリー20101c

テーブルを解析したいのですが、columnA columnB columnCが共通して、これら3つの列の値を表示した後、各レコードのcolumnDで見つかった値を表示する複数の行を見つけた場合、それらの列ABCは同じです。

このようなもの

印刷出力           
ゲイリー20110a、b
ゲイリー20101a
メアリー20110a
メアリー20101b、c

私はmysqlを使用しています。distinctで試しましたが、同様のABC列が見つかった場合に印刷が複製されます。たとえば、表示する代わりに

ゲイリー20110a、b

一度、それはこの行を2回無効にし、以下同様に3、4 ...回、見つかった同様の行ごとに...

ありがとう、モズリー

4

1 に答える 1

0

あなたが探しているGROUP_CONCAT

SELECT columnA, columnB, columnC,
     GROUP_CONCAT(DISTINCT columnD
               ORDER BY columnD ASC SEPARATOR ', ') AS columnD
     FROM records
     GROUP BY columnA, columnB, columnC

結果

| COLUMNA | COLUMNB | COLUMNC | COLUMND |
-----------------------------------------
| ゲイリー| 2010 | 1 | a |
| ゲイリー| 2011 | 0 | a、b |
| メアリー| 2010 | 1 | b、c |
| メアリー| 2011 | 0 | a |

デモを見る

于 2013-01-15T01:27:46.417 に答える