SAS SQL - две таблицы (A и B), где единственным общим полем является ключ - нужно все в A, что не в B
У меня есть две таблицы, где поля отличаются, за исключением общего ключа. Мне нужно хранить записи только с ключами, которые находятся в A, а НЕ в B. Мне не нужны записи, которые находятся только в B, или записи, которые находятся как в A, так и в B (так, чтобы исключить что-либо во внутреннем соединении).
Я вижу ссылки SAS SQL на "EXCEPT", но кажется, что их можно использовать, только если все поля совместно используются двумя таблицами, поскольку ключ не используется. Есть ли другой способ?
4 ответа
Вы должны использовать SQL?
data want ;
merge A (in=in1) B(keep=id in=in2);
by id;
if in1 and not in2 ;
run;
Просто используйте NOT EXISTS
:
proc sql;
select a.*
from a
where not exists (select 1 from b where a.key = b.key);
Вы могли бы использовать exists
оператор:
SELECT *
FROM a
WHERE NOT EXISTS (SELECT *
FROM b
WHERE a.id = b.id)
Еще один подход с except
чтобы получить все идентификаторы (или ключевой столбец) в A, которые не находятся в B. Затем используйте те id
s, чтобы получить все записи от A.
select a.*
from a
inner join (select id from a except select id from B) t
on a.id = t.id