[英]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.