繁体   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