mysql中GROUP BY结合GROUP_CONCAT的使用

有查询语句如下所示:

select id, type, size, place_id from contents;

查询结果↓:

id  type size place_id 

1   txt    12   100

2   jpg   10   100

3   bmp 15   100  

4   jpg   13   101

5   txt    20   101

 

需求是要统计每个place中content的个数(file_num),文件种类(file_type),总SIZE数(file_size )。

 

于是想到了用来统计的SQL语句如下所示:

SELECT place_id, COUNT(id)  file_num, content_type  file_type, SUM(size)  file_size FROM contents;

查询结果↓:

place_id  file_num  file_type  file_size 

100         3             txt            37

101         2             jpg           33

 

从上述查询记过可以得知file_type的统计有问题:

例如,

对于place 100来说,其中有三种type分别是txt、jpg、bmp,

但是上述语句只能统计出一种,这时就要用到GROUP_CONCAT函数了呢。。。

 

更改SQL文为:

SELECT place_id, COUNT(id)  file_num, GROUP_CONCAT(content_type SEPARATOR "&")  file_type, SUM(size)  file_size FROM contents;

查询结果↓:

place_id  file_num  file_type              file_size 

100         3             txt&jpg&bmp       37

101         2             jpg&txt                33

 

这样的结果就对了!

 

 

 

 

你可能感兴趣的:(sql,mysql)