mysql--一个字段的多个值连表查询
2022/4/20 19:42:31
本文主要是介绍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--一个字段的多个值连表查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程