Как найти дополнительные / разные строки в таблице по сравнению с другой таблицей? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь найти строки, которые являются дополнительными или разными при сравнении двух таблиц в SQL Server.

Например, # temp1 имеет 5000 строк, а # temp2 имеет 5125 строк.

Я пытался сделать

SELECT * FROM #temp1
EXCEPT
SELECT * FROM #temp2

но возвращает пустые результаты.

Итак, я попытался

SELECT * FROM #temp1
INTERSECT
SELECT * FROM #temp2

и это возвращает 5000 строк, то есть количество строк из # temp1, так что это показывает, что # temp2 содержит все строки, которые существуют в # temp1, но у него просто 125 дополнительных строк. Я пытаюсь написать запрос, который показывает только эти дополнительные 125 строк из # temp2. ​​

Ответы [ 3 ]

2 голосов
/ 13 июня 2019

Вы можете попробовать это

SELECT * 
FROM #table2 
WHERE NOT EXISTS 
    (SELECT * 
     FROM #table1 
     WHERE #table1.PK = #table2.PK)

Или

SELECT *
FROM #table2 t1
LEFT JOIN #table2 t2 ON t2.PK = t1.PK
WHERE t2.PK IS NULL

Это будет работать на любой из баз данных SQL

1 голос
/ 13 июня 2019

Один забавный способ:

(SELECT * FROM #temp2
 UNION 
 SELECT * FROM #temp2
) EXCEPT
(SELECT * FROM #temp1
 INTERSECT
 SELECT * FROM #temp2
)

Это просто показывает уникальные строки, которые отличаются.Это не показывает, в каком столе они были первоначально.

1 голос
/ 13 июня 2019

Ваш заказ неверный

SELECT * FROM #temp2
EXCEPT
SELECT * FROM #temp1
...