我想加入两张桌子。一个表中有一个带有ID的列,我正在尝试左边连接到其中具有相同ID的不同表,尽管第二个表可以包含每个单元的多个ID。例如,如果我的第一个表的ID值为123
,而第二个表的ID值为123;724;823
,有没有办法让它加入这两行?
答案 0 :(得分:0)
您在查询设计器中尝试过吗?在那里很容易加入。
SELECT column_names FROM table-name1 LEFT JOIN table-name2 ON ID_column-name1 = ID_Column-name2 条件X,Y,Z
希望能帮到你。答案 1 :(得分:0)
select *
from
(
select '123' as id
union select '124'
) as t1
left join
(
select '123;001;002' as id
union select '001;123;002'
union select '001;002;123'
) as t2 on
t2.id = t1.id
or t2.id like t1.id + ';%'
or t2.id like '%;' + t1.id + ';%'
or t2.id like '%;' + t1.id
答案 2 :(得分:0)
使用多个like
运算符可能是最快的方法,但如果你有一个像DelimitedSplit8K这样的字符串拆分器函数,你可以将值拆分成一个表并加入它。
SELECT *
FROM table1 t1
LEFT JOIN (
SELECT *
FROM table2 t2
OUTER APPLY (
SELECT *
FROM dbo.[DelimitedSplit8K] (t2.id,';') -- splits the values in multi id column
) t
) t ON t.Item = t1.id -- t.Item is the value generated from the DelimitedSplit8K TVF