mysql group_concat函数字符串连接方法

发布时间:2020-07-19编辑:脚本学堂
有关mysql数据库中group_concat函数实现字符串连接的方法,group_concat返回带有来自一个组的连接的非null值的字符串结果,具体用法详见文中例子。
mysql group_concat函数字符串连接方法

mysql数据库中,如何获取表达式组合的连接值,可以使用distinct删去重复值。

有时需要对多结果值进行排序,则应该使用order by子句。
若要按相反顺序排列,将 desc (递减) 关键词添加到要用order by 子句进行排序的列名称中。

默认顺序为升序;可使用asc将其明确指定。
separator 后面跟随应该被插入结果的值中间的字符串值。
默认为逗号 (‘,’)。通过指定separator ” ,可以删除所有分隔符。

有如下的表:
 

table A
————–
aid | computer
————–
1 | hp
————–
2 | sony
————–
table B
————–
aid | color
————–
1 | red
————–
1 | black
————–
2 | white
————–

需要得到如下结果:
 

——————————————
aid | computer | color
——————————————
1 | hp | red;black
——————————————
2 | sony | white
——————————————

这里提供二种解决方法:
法1:可以写一个函数来组合color值。
法2:使用group_concat(B.color separator ‘;’)
group_concat返回带有来自一个组的连接的非NULL值的字符串结果,例如:
 

select a.aid,a.computer,group_concat(b.color separator ‘;’)
frome ta a inner join tb b on a.aid=b.aid
group by a.aid,a.computer

有关group_concat的排序用法:

mysql> select student_name,
->  group_concat(distinct test_score
->    order by test_score desc separator ‘ ‘)
->  from student
->  group by student_name;