MySql教程

mysql--一个字段的多个值连表查询

本文主要是介绍mysql--一个字段的多个值连表查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

众所周知,MySQL是关系型数据库,我们在处理关系的方式可以通过外键,也可以通过用一个字段去存储另一张表的唯一值,下面说一下我当前的场景

table1:user表

table2:team表

id team_name team_owner team_leaders
自增主键 团队1 zhangsan lisi,wangwu

其中,team表是这样的结构,首先从业务方面:team_owner最多1个人,而team_leaders字段是不确定的,有可能无leader,有可能1个,有可能多个,那么也可以看得出来,对于这个角色我用的是字符串类型,这个时候,我想要让这张表与user表通过join查询匹配对应的人名字,怎么让team_leaders字段的姓名匹配出来呢??

select t.id,group_concat(u.name) from team as t inner join user as u on find_in_set(u.username,t.team_leaders)>0 group by t.id
id group_concat(u.name)
1 李四,王五

但是,这里遇到的一个问题是:find_in_set是获取到位置,按获取到的位置排序,再group concat,就是如果在user表里,wangwu的id是1,lisi的id是2,,那么查出来的结果就是这样的:它会以user表的索引去排序,有可能会颠倒我team表里这个字段的顺序

id  group_concat(u.name)
 1  王五,李四

 这里需要再去排序以下

select t.id,group_concat(u.name order by find_in_set(u.username,t.team_leaders)) from team as t inner join user as u on find_in_set(u.username,t.team_leaders)>0 group by t.id

 

这篇关于mysql--一个字段的多个值连表查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!