У меня есть две таблицы: 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
Я хочу отфильтровать комбинацию значений для каждой записи в таблице B, чтобы найти отсутствующие значения, присутствующие в таблице A.


Вам нужно левое соединение от tablea к tableb и получить только те строки tablea, которые не совпадают:
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
Вы должны указать имена таблиц с именами базы данных и схемы, например: from database1.dbo.tablea a left join database2.dbo.tableb b, и две базы данных должны находиться на одном сервере.
Используйте 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)
Есть ли способ сделать это, если он находится в разных базах данных? Или мне нужно поместить их во временную БД, чтобы вообще иметь возможность это делать?