Отфильтровать целые записи SQL

У меня есть две таблицы: 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.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
38
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно левое соединение от 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 

Есть ли способ сделать это, если он находится в разных базах данных? Или мне нужно поместить их во временную БД, чтобы вообще иметь возможность это делать?

Christopher Carlisle 08.06.2019 00:21

Вы должны указать имена таблиц с именами базы данных и схемы, например: from database1.dbo.tablea a left join database2.dbo.tableb b, и две базы данных должны находиться на одном сервере.

forpas 08.06.2019 00:51

Используйте 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)

Другие вопросы по теме