SELECT username,STRING_AGG(coursename,',')WITHINGROUP(ORDERBY score DESC)AS courses
FROM t_user_course
GROUPBY username;
旧版本替代方案:
SELECT username,courses = STUFF((SELECT','+ coursename FROM t_user_course WHERE username = a.username FOR XML PATH('')),1,1,'')FROM t_user_course a
GROUPBY username;
四、PostgreSQL
STRING_AGG() 函数说明:
聚合函数中灵活性最高,支持大文本(1GB限制),可配合FILTER子句使用。
语法结构:
STRING_AGG(列名,'分隔符'[ORDERBY 排序列])
参数解释:
分隔符:必选参数
ORDER BY:直接内联排序控制
示例:
SELECT username,STRING_AGG(coursename,'|'ORDERBY course_id)AS courses
FROM t_user_course
GROUPBY username;