首页 > 解决方案 > 根据列中的多个值选择行

问题描述

我有两个表(T1,T2)。下面是这两个表的示例记录。

T1
 --
    RNO    NAME
    ---   ------ 
    1      NAME1
    2      Name3
    3      Name4

    T2
    ---
    RNO    NAMES
    ---    -----
    1      NAME1,Name5
    2      Name4
    3      Name2

我想根据 T2 表中的“名称”列从 T2 中选择记录,该列包含 T1 表中“名称”列的任何一个值。

例如

Sample Output

RNO   Names
---   -----
1     Name1,Name5
2     Name4

'Name2' 不应出现在输出中,因为它在 T1 表中不存在。请帮助。

标签: sql-serverselect

解决方案


这有用吗。?

SELECT * FROM T2
Inner join T1
 ON (
       (t2.Name=t1.Name)
          OR
       (t2.Name LIKE'%'+t1.Name+',%')
          OR
       (t2.Name LIKE'%,'+t1.Name+'%')
          OR
       (t2.Name LIKE'%,'+t1.Name+',%')
   )

小提琴:http ://sqlfiddle.com/#!18/b4641/1


推荐阅读