我有两个表TableA和TableB ....
表A
+----+-----------------+
| Id | ColName |
+----+-----------------+
| 1 | Name1 |
| 1 | Name2 |
| 1 | Name3 |
| 1 | Name4 |
| 1 | Name5 |
| 1 | Name6 |
| 1 | Name7 |
| 1 | Name8 |
+----+-----------------+
表B
+----+-----------------+-----------------+-----------------+
| Id | ColName | CriticalityName | RefNo |
+----+-----------------+
| 1 | Name1 | High | RE1 |
| 1 | Name1 | Low | RE1,RE2 |
| 1 | Name1 | Low | RE1 |
| 1 | Name1 | Low | RE1 |
| 1 | Name1 | Low | RE1,RE2 |
| 1 | Name6 | High | RE3 |
| 1 | Name7 | High | RE3 |
| 1 | Name8 | High | RE1,RE@,RE3 |
| 1 | Name1 | High | RE1 |
| 1 | Name1 | High | RE4,RE5 |
| 1 | Name1 | High | RE1 |
| 1 | Name1 | High | RE1 |
| 1 | Name5 | High | RE1 |
| 1 | Name6 | High | RE1 |
| 1 | Name1 | High | RE1 |
| 1 | Name1 | High | RE3 |
| 1 | Name1 | High | RE2 |
| 1 | Name1 | High | RE4 |
| 1 | Name3 | High | RE5 |
| 1 | Name1 | Low | RE1 |
| 1 | Name1 | Low | RE1,RE@,RE3 |
| 1 | Name1 | High | RE5 |
| 1 | Name1 | Low | RE1,RE@,RE3 |
| 1 | Name8 | Low | RE4 |
+----+-----------------+-----------------+-----------------+
我需要使用 RefNo 列进行过滤,同时内部连接两个表TableA,TableB
我需要一个输出如下:
+----+--------------+--------------+
| Id | ColName | RefNo |
+----+--------------+--------------+
| 1 | Name1 | RE1 |
| 1 | Name5 | RE1 |
| 1 | Name6 | RE1 |
| 1 | Name8 | RE1 |
+----+--------------+--------------+
这里我内部加入TableA和TableB并使用RefNo过滤(将RE1作为参数传递)。
其中包含RE1的行显示为输出..
我知道在内部加入后过滤它。
请帮帮我..
答案 0 :(得分:1)
这是你想要的吗?
select a.id, a.colname, 'RE1' as b.refno
from tableA a join
tableB b
on a.colname = b.colname and
',' + RefNo + ',' like '%,' + 'RE1' + ',%' ;
作为一个注释:在列中存储事物列表是一个非常非常糟糕的主意。 SQL提供了一个很好的数据结构来存储事物列表,它被称为表而不是字符串列。在这种情况下,您需要一个联结表,每个人id
(和/或ColName
)和RefNo
都有一个单独的行。