Показать все и только строки в таблице 1, а не в таблице 2 (используя несколько столбцов) - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть одна таблица (Table1), в которой несколько столбцов используются в комбинации: Name, TestName, DevName, Dept. Когда каждый из этих 4 столбцов имеет значения, запись вставляется в Table2.Мне нужно подтвердить, что все записи с существующими значениями в каждом из этих полей в Таблице 1 были правильно скопированы в Таблицу 2.

Я создал для него запрос:

SELECT DISTINCT wr.Name,wr.TestName, wr.DEVName ,wr.Dept
FROM table2 wr
where NOT EXISTS (
SELECT NULL
FROM TABLE1 ym
WHERE ym.Name = wr.Name 
          AND ym.TestName = wr. TestName
          AND ym.DEVName = wr.DEVName 
          AND ym. Dept = wr. Dept 
          )

Мойотсчеты не складываются, поэтому я считаю, что это неправильно.Можете ли вы посоветовать мне лучший способ написать этот запрос для моих нужд?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

Ваш запрос должен выполнить работу. Он проверяет все, что находится в Table1, но не Table2

SELECT ym.Name, ym.TestName, ym.DEVName, ym.Dept
FROM Table1 ym
WHERE NOT EXISTS (
    SELECT 1
    FROM table2
    WHERE ym.Name = Name AND ym.TestName = TestName AND ym.DEVName = DEVName AND ym. Dept = Dept 
)

Если структура обеих таблиц одинакова, EXCEPT, вероятно, проще.

2 голосов
/ 18 апреля 2019

Для этого можно использовать оператор набора EXCEPT, если определения таблиц идентичны.

SELECT DISTINCT ym.Name, ym.TestName, ym.DEVName, ym.Dept
FROM table1 ym
EXCEPT
SELECT DISTINCT wr.Name, wr.TestName, wr.DEVName, wr.Dept
FROM table2 wr

Возвращает отдельные строки из первой таблицы, где во второй таблице нет совпадений.Подробнее о EXCEPT и INTERSECT здесь: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/set-operators-except-and-intersect-transact-sql?view=sql-server-2017

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