如何从tableA中选择所有行,其中tableB中的两个相关列与tableA中的相同

时间:2011-12-06 21:19:06

标签: sql sql-server-2005

以下是tableA和TableB中的示例行:

 col1   col2    col3
123  |  asdf  |  ddd

我打算尝试使用CTE来检索此值,但我一次只能使用一列。

这是我到目前为止所做的,但现在我很难过。

    ;with cte as (
     SELECT  A.col1
          ,A.col2
      FROM tableA A
        )

    select col1, col2 from cte where col1, col2

    not in (select col1, col2 from FHU.dbo.HolidayCallers)

并且重申一下,我希望输出是最初的样本行。

2 个答案:

答案 0 :(得分:4)

根据您的问题,您可以使用EXISTS查找两个表中相关列的行。

SELECT a.ConversationID, a.SendDateUtc
    FROM tableA a
    WHERE EXISTS(SELECT NULL
                     FROM FHU.HolidayCallers hc
                     WHERE a.ConversationID = hc.ConversationID
                         AND a.SendDateUtc = hc.SendDateUtc);

但是,根据您提供的示例代码,您似乎正在寻找NOT EXISTS条件:

SELECT a.ConversationID, a.SendDateUtc
    FROM tableA a
    WHERE NOT EXISTS(SELECT NULL
                         FROM FHU.HolidayCallers hc
                         WHERE a.ConversationID = hc.ConversationID
                             AND a.SendDateUtc = hc.SendDateUtc);

答案 1 :(得分:1)

您可以使用INNER JOIN查找两个表中的记录:

SELECT a.ConversationID, a.SendDateUtc
FROM tableA AS a
INNER JOIN FHU.dbo.HolicayCallers AS hc ON a.ConversationId = hc.ConversationId
   AND a.SendDateUtc = hc.SendDateUtc