内部连接两个表后查询

时间:2014-10-20 11:13:12

标签: sql sql-server-2008

我有两个表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的行显示为输出..

我知道在内部加入后过滤它。

请帮帮我..

1 个答案:

答案 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都有一个单独的行。