2012-04-18 130 views
3
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 

这个查询查询返回多个记录作为一个字符串

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 

这将返回类似:

last_name  sport 
Robinson  basketball 
Robinson  baseball 
Smith   football 
Smith   baseball 
Norris   baseball 
Norris   basketball 

我想修改的查询返回的结果是这样的:

last_name  sport 
Robinson  basketball, baseball 
Smith   football, baseball 
Norris   baseball, basketball 
+4

MySQL的['GROUP_CONCAT()'函数(http://dev.mysql.com/doc/refman/5.0/en/group-by- functions.html#function_group-concat)执行此操作。 – 2012-04-18 15:33:04

+1

搜索SO for GROUP_CONCAT,你会发现很多关于如何使用它的例子。 – 2012-04-18 15:33:43

+0

[MySQL结果为逗号分隔列表]可能的重复(http://stackoverflow.com/questions/662207/mysql-results-as-comma-separated-list) – 2012-04-18 15:34:31

回答

9

正如@brad所示:

select 
last_name, group_concat(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 
group by s.id 

编辑:通过更新该组..

+0

将group by by s.id改为group,诀窍。 – Brad 2012-04-18 15:47:49

+0

没错。我修正了这一点。有点快到了..斯里。 – barsju 2012-04-18 15:49:23

相关问题