我GROUP_CONCAT()在MySQL查询中使用将多行转换为单个字符串.但是,此函数的结果的最大长度是1024字符.
我非常清楚我可以改变参数group_concat_max_len来增加这个限制:
SET SESSION group_concat_max_len = 1000000;
Run Code Online (Sandbox Code Playgroud)
但是,在我正在使用的服务器上,我无法更改任何参数.不是通过使用前面的查询而是通过编辑任何配置文件.
所以我的问题是:有没有其他方法可以将多行查询的输出转换为单个字符串?
我需要函数,它返回字符串列表.
我有这样的表中的数据:
Id MyString
------------------------
1 First
2 Second
3 Third
4 Fourth
Run Code Online (Sandbox Code Playgroud)
我需要这样的函数(这样的东西在oracle中工作):
select LISTAGG(MyString, ', ') as myList where id < 4
Run Code Online (Sandbox Code Playgroud)
返回的内容如下:
myList
------------------------
First, Second, Third
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
students: id, last_name
1 Robinson
2 Norris
3 Smith
sports: id, title
1 Basketball
2 Baseball
3 Football
students_sports: student_id, sport_id
1 3
1 2
2 1
2 3
3 3
3 1
Run Code Online (Sandbox Code Playgroud)
这个查询
select
last_name, sports.title as sport
from
students s
left join
students_sports ss
on
s.id = ss.student_id
left join
sports
on
ss.sport_id = sports.id
Run Code Online (Sandbox Code Playgroud)
它会返回类似于:
last_name sport
Robinson basketball
Robinson baseball
Smith football
Smith baseball
Norris baseball
Norris basketball
Run Code Online (Sandbox Code Playgroud)
我想修改查询以返回如下结果:
last_name sport
Robinson basketball, baseball
Smith football, …Run Code Online (Sandbox Code Playgroud)