SQL возвращает все идентификаторы из 1 таблицы и только те, которые не совпадают с другой - PullRequest
1 голос
/ 20 августа 2010

У меня есть 2 таблицы: #tmptable1 и #tmptable2.Эти таблицы имеют идентификатор для уникальной идентификации каждой записи.

Я хочу вернуть все записи из таблицы 1, но я хочу только вернуть записи из таблицы 2, которых нет в таблице 1

Я хочу, чтобы это было сделано в 1 запросе.

Спасибо!

Ответы [ 4 ]

3 голосов
/ 20 августа 2010

Если все остальные поля и данные двух таблиц идентичны, вы можете сделать это:

SELECT * FROM #tmptable1
UNION
SELECT * FROM #tmptable2

UNION без модификатор ALL удаляет дубликаты.

3 голосов
/ 20 августа 2010
SELECT * FROM '#tmptable1' 
UNION ALL
SELECT * FROM  '#tmptable2' WHERE 
    ID NOT IN (SELECT ID FROM #tmptable1 WHERE ID IS NOT NULL)
1 голос
/ 20 августа 2010

Я не совсем понимаю, что вы хотите получить в результатах, но UNION выбирает разные значения, поэтому у вас не будет дублированных значений (значений из # tmptable2, которые уже существуют в # tmptable1).

SELECT * FROM #tmptable1
UNION
SELECT * FROM #tmptable2

В любом случае, эти записи являются записями из # tmptable2, которых нет в # tmptable1.

SELECT * FROM #tmptable2
EXCEPT
SELECT * FROM #tmptable1
0 голосов
/ 20 августа 2010
SELECT ID FROM #tmptable1
UNION
SELECT ID FROM #tmptable2

Оператор UNION автоматически удаляет дубликаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...