Отфильтровывать целые записи SQL - PullRequest
0 голосов
/ 08 июня 2019

У меня есть две таблицы: TableA и TableB

TableA имеет 10 записей, в то время как TableB имеет 8 записей.

Я пытаюсь отфильтровать отдельные записи в таблице B из таблицы A, чтобы затем переместить несоответствие в таблицу B.

Это устаревшая, плохо сделанная база данных, поэтому уникальных идентификаторов не существует.Так они выглядят примерно так.

    TableA                               TableB
    Col1, Col2, Col3                Col1,Col2,Col3
 1    X     X    Y                    X    X   Y
 2    X     Y    Y                    X    Y   Y
 3    X     X    X  

Я хочу отфильтровать комбинацию значений для каждой записи в TableB, чтобы найти отсутствующие значения, которые присутствуют в TableA

Ответы [ 2 ]

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

Использование NOT EXIST

select * 
from tablea ta 
where NOT EXIST (
     select 1 
      from tableb tb 
     where ta.col1 = tb.col1
          and ta.col2 = tb.col2
          and ta.col3 = tb.col3)
0 голосов
/ 08 июня 2019

Вам нужно левое соединение от tablea к tableb и получить только те строки таблицы, которые не совпадают:

select a.*
from tablea a left join tableb b
on b.col1 = a.col1 and b.col2 = a.col2 and b.col3 = a.col3
where b.col1 is null and b.col2 is null and b.col3 is null 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...