MySQL - 从另一个表中收集相关的行

时间:2010-12-27 02:25:28

标签: database mysql

我有三张桌子,就像:

users
---------------
id
etc...

badges
---------------
id
title
etc...

badges_data
---------------
badge_id
user_id

我要做的是选择一组约100个用户,并获取他们拥有的所有徽章,并将其显示在各自的用户旁边。

最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

 select 
   users.*,
   group_concat(badges.id, '=', badges.title separator ';') as badges_info
 from users
 left  join badges_data on badges_data.user_id=users.id
 inner join badges on badges.id=badges_data.badge_id
 group by users.id
 limit 100;

以上将返回

等数据
 user.*, 
 badges_id=title;badges_id=title; ...

如果您认为group_concat返回的格式难以阅读/解析

 select 
   users.*,
   badges.*
 from users
 left  join badges_data on badges_data.user_id=users.id
 inner join badges on badges.id=badges_data.badge_id

如果用户有多个徽章

,这将为同一用户返回多行
相关问题