繁体   English   中英

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

[英]group or select distinct columns in 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,我尝试了与众不同的方法,但是当发现相似的ABC列时,它会重复打印。 例如,而不是显示

gary   2011    0   a,b

一次,它将使该行失效两次,以此类推,对于发现的每条相似行,重复三,四次...

谢谢你,莫兹利

您正在寻找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 |

观看演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM