您好,我试图获得以下结果
表1
ID | Name
1 | Name1
2 | Name2
表2
ID | State | NameIDS
1 | NY | 1,2
2 | ZA | 1
我正试图通过整个数组来获得乐趣,所以我得到了
ID | State | NameIDS
1 | NY | Name1,Name2
2 | ZA | Name1
试图在一个单一的查询中得到它
Select Table2.ID,State,Table1.Name
From Table2
JOIN Table1 ON FIND_IN_SET(Table1.ID, Table2.NameIDS) != 0
但这给了我
ID | State | NameIDS
1 | NY | Name1
1 | NY | Name2
2 | ZA | Name1
答案 0 :(得分:0)
修复您的数据模型!您不应在字符串列表中存储多个ID。以下是一些很好的理由:
有时候,您真的非常,非常非常,非常非常糟糕的数据建模决策与其他人纠缠在一起。如果是这样,您可以执行以下操作:
select t2.ID, t2.State,
group_concat(t1.Name order by t1.id) as names
from Table2 t2 join
Table1 t1
on find_in_set(t1.ID, t2.NameIDS) <> 0
group by t2.ID, t2.State;