SQL - 在单元格中具有多个值的列上使用连接

时间:2016-04-08 14:14:29

标签: sql-server join

我想加入两张桌子。一个表中有一个带有ID的列,我正在尝试左边连接到其中具有相同ID的不同表,尽管第二个表可以包含每个单元的多个ID。例如,如果我的第一个表的ID值为123,而第二个表的ID值为123;724;823,有没有办法让它加入这两行?

3 个答案:

答案 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