簡體   English   中英

MySQL-從另一個表收集相關行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM