[英]MySQL - Collecting related rows from another table
我有三个表,就像:
users
---------------
id
etc...
badges
---------------
id
title
etc...
badges_data
---------------
badge_id
user_id
我想做的是选择一组大约100个用户,并抓住他们拥有的所有徽章,并在他们各自的用户旁边显示它们。
最好的方法是什么?
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
如果该用户具有多个徽章,它将为同一用户返回多行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.