Справка по соединению SQL между двумя таблицами - PullRequest
0 голосов
/ 02 июля 2018

У меня есть две таблицы: Таблица a и Таблица b.

Таблица b содержит подмножество таблицы a. Я хотел бы получить все идентификаторы идентификаторов таблицы А, которых нет в таблице b (идентификатор является общим столбцом). Пробовал с этим SQL, но это не работает, выберите имя из таблицы a, где имя не в

select unique name
from table a inner join
     table b
     on a.id = b.id;  

Ценю вашу помощь

Ответы [ 5 ]

0 голосов
/ 02 июля 2018

Пожалуйста, попробуйте это у меня работает

ВЫБРАТЬ * ОТ (ВЫБРАТЬ a.id, имя, COUNT (b.name) AS count Из ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ b ON a.name = b.name GROUP BY a.id, a.name) C WHERE C.count = 0

0 голосов
/ 02 июля 2018

Посмотрите на оператор SQL Minus - иногда реализованный как Except (как в SQLite).

select id from TableA minus select id from TableB;
select id from TableA except select id from TableB;
0 голосов
/ 02 июля 2018

Просто "выберите идентификатор a, которого нет в таблице b"

select a.id 
from tab_a 
where a.id not in (select b.id from tab_b)
0 голосов
/ 02 июля 2018

Один из способов - использовать способ JNevills с помощью left outer join.

В Oracle вы также можете использовать exists:

with TableA as (
  select 1 as "COL1" from dual
  union all select 2 from dual
  union all select 3 from dual
  union all select 4 from dual
  union all select 5 from dual
), TableB as (
  select 1 as "COL1" from dual
  union all select 2 from dual
  union all select 3 from dual
)
select * 
from TableA
where not exists(select * 
                 from TableB 
                 where TableA.COL1 = TableB.COL1)
0 голосов
/ 02 июля 2018

Вам нужно использовать LEFT OUTER JOIN здесь. Это извлечет все значения из TableA и только те, которые совпадают с TableB, затем в предложении WHERE вы можете проверить, равны ли значения TableB NULL, возвращая только значения TableA, которые не соответствуют:

 SELECT UNIQUE tableA.id FROM tableA LEFT OUTER JOIN tableB ON a.id = b.id WHERE b.id IS NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...