【问题标题】:query after inner joining two tables内部连接两个表后查询
【发布时间】:2014-10-20 11:13:11
【问题描述】:

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

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

请帮帮我..

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案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都有一个单独的行。

    【讨论】:

    • 为什么我们需要 ',' + RefNo + ',' like '%,' + 'RE1' + ',%' ?我们不能像“%RE1%”一样使用 RefNo。只有当我们有 RE11 时它才会有用。
    • @NMK 。 . .我不明白你的评论。据推测,OP 希望“RE1”和“RE11”被视为不同的东西——因此使用了分隔符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2014-11-07
    • 2016-05-27
    • 2019-07-01
    相关资源
    最近更新 更多