提问者:小点点

分组和删除SQL中除一列之外的重复项


我有三张桌子

  1. 扬声器
  2. 会话
  3. 事件
id  event_name
--- -----------
1   event1
2   event2
3   event3
id  name
--- ----
1   john
2   smith
3   sooraj
id      name        speaker_id     event_id
----    ----        --------       ------
1       session1    1              1
2       session2    2              1
3.      session3    1              2
4.      session1    1              3
5.      session2    3              3

我需要得到这样的结果。。。。


id  speakername     event_name
--- ------------    -----------
1   john            event1, event2, event3
2   smith           event1
3.  sooraj          event3

如何在MySQL中获得这个。。。?

谢了。


共1个答案

匿名用户

您可以使用joingroup by:

select sp.id, sp.name, group_concat(e.event_name separator ', ')
from speakers sp left join
     sessions s
     on sp.speaker_id = s.id left join
     events e
     on sp.event_id = e.id
group by sp.id, sp.name;

如果事件名称可以为给定的演讲者重复,则可以使用:

group_concat(distinct e.event_name separator ', ')