concat效率 mysql_了解mysql concat()函数

本文介绍了MySQL中的CONCAT与GROUP_CONCAT函数的使用,包括如何结合字段值生成字符串,如何使用分隔符,以及在数据分组时如何拼接多个值。通过示例展示了如何在学生表和课程表的查询中,有效利用这两个函数来提高数据的可读性。
摘要由CSDN通过智能技术生成

concat(arg1,arg2,....):将形参对应字段的值组合成一个字符串

假设:现在有一张学生表(test_user)

将这三个字段组合成一个字符串作为第四个字段

select test_user.*,

concat(test_user.id,test_user.`name`,test_user.sex)asintroductionfromtest_userGROUP BY `name`;

但是查询出来的数据没有分割符,可以在concat中加入常量

select test_user.*,

concat(test_user.id,',',test_user.`name`,',',test_user.sex) asintroductionfromtest_userGROUP BY `name`;

这样写如果分隔符都一样,又要一直加,那不是很麻烦。

mysql提供另一个函数concat_ws(separator,arg1,arg2,.....),第一个参数为分隔符,第二个以后的参数为字段名

selectu.*,

concat(u.id,',',u.`name`,',',u.sex) asintroduction,

CONCAT_WS('.',u.id,u.`name`,u.sex) asxinxifromtest_user uGROUP BY u.`name`;

这些只是对单条记录数据的拼接。

现在多了张课程表(test_subject)

想查询每个学生的课程有哪些

select * from test_user LEFT JOIN test_subject on test_user.id = test_subject.user_id;

但是这样看起来不够直观。那就干脆先按名称分组。

select

*

from

test_user LEFT JOIN test_subject

on test_user.id = test_subject.user_id

GROUP BY test_user.`name`;

但是分完组之后,课程只剩下一个了,没有达到预期的要求,

mysql提供一个函数GROUP_CONCAT(arg1),内部的形参在分组时,则在arg1字段中将属于该分组的值字段进行拼接,拼接顺序会被order by影响

select

test_user.*,

GROUP_CONCAT(test_subject.`subject`) as `subject`

from

test_user LEFT JOIN test_subject

on

test_user.id = test_subject.user_id

GROUP BY

test_user.`name`;

完成。清晰明了的显示各个学生所有的科目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值