我有三张桌子,就像:
users
---------------
id
etc...
badges
---------------
id
title
etc...
badges_data
---------------
badge_id
user_id
我要做的是选择一组约100个用户,并获取他们拥有的所有徽章,并将其显示在各自的用户旁边。
最好的方法是什么?
答案 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
如果用户有多个徽章
,这将为同一用户返回多行