MySQL中concat以及group_concat的使用

自我理解

concat:   即将一行数据 中的 多列数据合并成一列 数据

group_concat:将 多行数据的某列 合并成一行且一列数据

 

concat不需要用到group by关键字

group_concat必须用到group by关键字,否则报错

group_concat应用场景例子


学生表 数据

id  name  age

1    张三    20

2    老王    30

3    李四    22

4    老王    25


需求:查询相同名字的学生

select group_concat(student.id  SEPARATOR ','),name from student group by name 


查询结果

id  name 

1    张三  

2,4    老王  

3    李四

即:原来有两行名字为“老王”的数据,id合并在一起了,中间用分隔符隔开

 

公司项目开发中写的sql附上

WITH jobName AS(
	SELECT GROUP_CONCAT(job.`name` SEPARATOR ',')  AS job_name, uoj.user_org_id
        FROM user_org_job uoj, job  
        WHERE uoj.job_id = job.id 
        GROUP BY uoj.user_org_id  
),
positionName AS(
	SELECT GROUP_CONCAT(p.`name` SEPARATOR ',')  AS position_name, uop.user_org_id
        FROM user_org_position uop, POSITION AS p 
        WHERE uop.position_id = p.id
        GROUP BY uop.user_org_id  
)
SELECT 
USER.*,
org.`id` AS org_id,
org.`name` AS org_name,
org.`type` AS org_type,
uo.`type` AS uo_type,
jobName.job_name,
positionName.position_name
FROM USER
LEFT JOIN  user_org  AS uo 
ON USER.`id` = uo.user_id
LEFT JOIN org 
ON org.`id` = uo.`org_id`
LEFT JOIN jobName 
ON  uo.id = jobName.user_org_id
LEFT JOIN positionName 
ON  uo.id = positionName.user_org_id
ORDER BY NAME ASC

参考:

https://blog.csdn.net/mary19920410/article/details/76545053/

group_concat用法

https://blog.csdn.net/qq_35531549/article/details/90383022

你可能感兴趣的:(mysql学习)