在mysql中分组或选择不同的列

时间:2013-01-15 01:20:16

标签: php mysql

我有一张这样的表

records            
columnA columnB columnC columnD
gary    2011    0       a
gary    2011    0       b
gary    2010    1       a
mary    2011    0       a
mary    2010    1       b
mary    2010    1       c

我想解析表格,如果我找到多个行,其中columnA columnB columnC是常见的,则显示这三列中的值一次,后面是在每个记录的columnD上找到的值,其中那些列ABC的位置相同。

像这样的东西

print output           
gary    2011    0   a,b
gary    2010    1   a
mary    2011    0   a
mary    2010    1   b,c

我正在使用mysql,我尝试使用distinct,但是当找到类似的A B C列时它会重复打印。例如,而不是显示

gary   2011    0   a,b

一次,它会消失这条线两次,所以三,四......次,发现每条相似的线......

谢谢你, 莫仕莱

1 个答案:

答案 0 :(得分: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 |
-----------------------------------------
|    gary |    2010 |       1 |       a |
|    gary |    2011 |       0 |    a, b |
|    mary |    2010 |       1 |    b, c |
|    mary |    2011 |       0 |       a |

See the demo