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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM