Mysql 在使用GROUP BY时,为具有多个层的用户指定层?
此查询选择以下内容:Mysql 在使用GROUP BY时,为具有多个层的用户指定层?,mysql,sql,grouping,concat,Mysql,Sql,Grouping,Concat,此查询选择以下内容: SELECT jobs.JobID, school.School_Name, CONCAT(staff.First_Name, ' ', staff.Last_Name) AS 'Full_Name', staff.Phone_Number, role.Role FROM jobs INNER JOIN school ON jobs.SchoolID=school.SchoolID INNER JOIN staff ON jobs.S
SELECT jobs.JobID, school.School_Name,
CONCAT(staff.First_Name, ' ', staff.Last_Name) AS 'Full_Name',
staff.Phone_Number, role.Role
FROM jobs
INNER JOIN school ON jobs.SchoolID=school.SchoolID
INNER JOIN staff ON jobs.StaffID=staff.staffID
INNER JOIN role ON jobs.roleID=role.roleID
ORDER BY staff.StaffID asc
JOB ID FULL NAME ROLE
------ --------- ----------
1 BOB PRINCIPLE
2 BOB TEACHER
3 JACK TEACHER
4 SARAH ACCOUNTANT
5 SARAH NURSE
但是,我希望结果如下所示:
BOB PRINCIPLE, TEACHER
JACK TEACHER
SARAH ACCOUNTANT, NURSE
我不知道如何处理这个问题,因为通过添加GROUPBY子句,它只选择第一个JobID
谢谢你的帮助 您可以使用
GROUP\u CONCAT
SELECT Full_Name, GROUP_CONCAT(Role) AS Role
FROM
(
SELECT jobs.JobID, school.School_Name, CONCAT(staff.First_Name, ' ', staff.Last_Name)
AS Full_Name, staff.Phone_Number, role.Role
FROM jobs
INNER JOIN school ON jobs.SchoolID=school.SchoolID
INNER JOIN staff ON jobs.StaffID=staff.staffID
INNER JOIN role ON jobs.roleID=role.roleID
ORDER BY staff.StaffID asc
) q
GROUP BY Full_Name
用您正在使用的数据库标记您的问题。聚合字符串连接函数是众所周知的非标准函数。欢迎@GoGoAllen您也可以将这些列添加到选择列表中:
选择全名、电话号码、学校名称、团体名称(工作)…
。顺便说一句,不需要添加到分组列表中。