1. 程式人生 > 其它 >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