Mysql中的concat和group_concat

一、CONCAT()

CONCAT()函数用于将多个字符串连接成一个字符串。

格式 SELECT CONCAT(str1,str2,...) AS xx  from TABLEname

运行结果为将tablename这个表里的所有字段都集合成一个xx字段显示出来

例 :select concat(CONTAINER_SIZE_ID, CONTAINER_TYPE_ID, CONTAINER_QTY )  AS sizeTypeQTY  from release_container

运行结果为:Mysql中的concat和group_concat_第1张图片


并且字段与字段之间可以用","隔开

例如:select concat(CONTAINER_SIZE_ID, ','  ,CONTAINER_TYPE_ID,  ','  , CONTAINER_QTY ) AS sizeTypeQTY   from release_container

运行结果为:

Mysql中的concat和group_concat_第2张图片


二、GROUP_CONCAT()函数
GROUP_CONCAT函数返回一个字符串结果,该结果由分组中的值连接组合而成。常和groupby连用

例:select     GROUP_CONCAT(CONTAINER_SIZE_ID, CONTAINER_TYPE_ID, CONTAINER_QTY )     AS     sizeTypeQTY      from     release_container
          GROUP BY CONTAINER_SIZE_ID, CONTAINER_TYPE_ID 

结果为:


这里不懂得可以多学习groupby原理,

到此 可以进一步优化sql语句

想获得20GP的总和,20HC的总和、、、、、、、 可以先groupbyCONTAINER_SIZE_ID, CONTAINER_TYPE_ID这两个字段 并Sum(CONTAINER_QTY)查出三个字段 

sql为

select     CONTAINER_SIZE_ID,   CONTAINER_TYPE_ID,     SUM(CONTAINER_QTY) as CONTAINER_QTY from release_container
                GROUP BY CONTAINER_SIZE_ID, CONTAINER_TYPE_ID

结果视图为:

Mysql中的concat和group_concat_第3张图片

并将查出这个视图的sql当作一张表 ,对这个表里的 三个字段进行group_contact

即    select GROUP_CONCAT(CONTAINER_SIZE_ID, CONTAINER_TYPE_ID, '*',CONTAINER_QTY) AS sizeTypeQTY  from (
select CONTAINER_SIZE_ID, CONTAINER_TYPE_ID, SUM(CONTAINER_QTY) as CONTAINER_QTY from release_container
                 GROUP BY CONTAINER_SIZE_ID, CONTAINER_TYPE_ID
            ) a 
结果视图为:

Mysql中的concat和group_concat_第4张图片


CONTAINER_SIZE_ID 和 CONTAINER_TYPE_ID为箱型 及是20GP,40GP的箱子 , CONTAINER_QTY 为箱量 例如 20GP1 表示为 20GP的箱子有一个。



你可能感兴趣的:(Mysql中的concat和group_concat)