У меня две таблицы имеют столбцы fname и lname, как бы я написал запрос для проверки и посмотрел, отсутствует ли в одной из таблиц запись, которая не существует в другой таблице?
Вот таблицы и их столбцы
tbl_client
-fname
-lname
tbl_lease
-fname
-lname
Мне нужно продолжить проверку tbl_lease, чтобы увидеть, соответствуют ли записи таблице tbl_client, и если она не сможет отобразить ее для меня. спасибо
Простым способом было бы использовать предикат not exists
в предложении where
:
select tbl_client.fname, tbl_client.lname, 'missing from lease' as missingfrom
from tbl_client
where not exists
(select 1 from tbl_lease where tbl_lease.fname=tbl_client.fname
and tbl_lease.lname=tbl_client.lname)
union
select tbl_lease.fname, tbl_lease.lname, 'missing from client' as missingfrom
from tbl_lease
where not exists
(select 1 from tbl_client where tbl_lease.fname=tbl_client.fname
and tbl_lease.lname=tbl_client.lname)
Или, возможно, выполнить полное внешнее соединение и проверить, какие записи в таблице являются нулевыми, но это, вероятно, немного менее прямолинейно и может быть менее эффективным, чем not exists
.
Получить все записи в tbl_lease, где fname отсутствует в tbl_client:
select tl.* from tbl_lease tl
left join tbl_client tc on tl.fname = tc.fname
where tc.fname is null;
И наоборот, записи присутствуют в tbl_client, где fname отсутствует в tbl_lease
select tc.* from tbl_client tc
left join tbl_lease tl on tc.fname = tl.fname
where tl.fname is null;