Как выбрать все строки в таблице А, где два коррелирующих столбца в таблице В идентичны столбцам в таблице А - PullRequest
1 голос
/ 07 декабря 2011

Вот пример строки, найденной в таблицах A и 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 ]

4 голосов
/ 07 декабря 2011

Исходя из вашего вопроса, вы могли бы использовать 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);

НО, исходя из предоставленного вами примера кода, похоже, что вы ищете условие НЕ СУЩЕСТВУЕТ:

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 голос
/ 07 декабря 2011

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...