Есть несколько подобных потоков за эти годы, но я не нашел или не смог сделать то, что ищу.SQL Server: список различий между таблицами
В настоящее время у меня есть две таблицы, которые имеют одну и ту же схему, которую я создаю через скрипт. Назовите имя «results_prior», а другое - «results_current». Этот новый запрос будет идеально работать один раз в месяц и обнаруживать, есть ли какие-либо различия. Пример:
ТАБЛИЦА: results_prior
----------------------------------------
| ID | ENVIRONMENT | EDITION | CONTACT |
----------------------------------------
| 03 | Development | 2008 | Bob |
----------------------------------------
| 05 | Production | 2012 | Phil |
----------------------------------------
| 09 | Development | 2008 | Erik |
----------------------------------------
| 13 | Production | 2012 | Ashley |
----------------------------------------
| 22 | Production | 2012 | Erik |
----------------------------------------
ТАБЛИЦА: results_current
----------------------------------------
| ID | ENVIRONMENT | EDITION | CONTACT |
----------------------------------------
| 03 | Development | 2008 | Bob |
----------------------------------------
| 05 | Production | 2012 | Phil |
----------------------------------------
| 22 | Production | 2012 | Erik |
----------------------------------------
Когда два сравниваются, результат должен быть:
----------------------------------------
| ID | ENVIRONMENT | EDITION | CONTACT |
----------------------------------------
| 09 | Development | 2008 | Erik |
----------------------------------------
| 13 | Production | 2012 | Ashley |
----------------------------------------
Так как 09 и 13 были в results_current. Аналогично, и это, пожалуй, сложная часть, это то же самое делать, если results_current имеет больше результатов, чем results_prior. Итак, наоборот.
Извините, у меня нет кода для примера. Я работаю с UNION, JOINs и ЗА ИСКЛЮЧЕНИЕМ последние несколько часов, и я чувствую, что моя логика (опять же, в SQL Server) просто не имеет никакого смысла. Любая помощь будет оценена.
Я бы сделать что-то подобное, но я бы заменить «НЕ СУЩЕСТВУЕТ» для «NOT IN» пункта. NOT EXISTS работает как оператор cut, поэтому при первом успехе он остановится и не будет оценивать больше строк для этого контекста. –
Отличные ответы на мой вопрос. Однако это тот, который дает мне результаты без необходимости прыгать через многие обручи. Я также заменил все столбцы на * и смог получить тот же результат. Что может быть полезно в случае добавления всех столбцов/полей по дороге. – Erik