Мне нужно сопоставить три столбца в двух таблицах. Запрос должен выбрать строку в t1 и найти любую строку в t2, где ВСЕ три столбца, перечисленные ниже, совпадают.
tbl_staged_documentation (t1 for reference)
orgname|name|subnet|customerid|customername|ipaddress|prefix
tbl_active_networks (t2 for reference)
orgid|ipaddress|prefixlength|sitename|siteid|name
Вот три столбца
t1.customerid = t2.orgid
t1.ipaddress = t2.ipaddress
t1.prefix = t2.prefixlength
Я посмотрел в JOIN и UNION. Похоже, UNION может вырвать дубликаты, но я не смог их достать. Ни присоединиться.
Похоже, что один из этих двух вариантов - путь, но я не знаю, как это сделать.
select *
from tbl_staged_documentation t1
join tbl_active_networks t2
on t1.customerid = t2.orgid
and t1.ipaddress = t2.ipaddress
and t1.prefix = t2.prefixlength
where
t1.customerid = t2.orgid AND t1.ipaddress != t2.ipaddress AND t1.prefix != t2.prefixLength;
Также попробовал следующее UNION
select customerid, ipaddress, prefix from tbl_staged_documentation
union
select orgid, ipaddress, prefixlength from tbl_active_networks;
В конечном итоге я пытаюсь выяснить, какой сетевой информации из t1 не существует в t2. T1 является источником истины. t2 содержит данные в производственной системе.
Данные из t1 будут динамически обновляться до t2, но из-за жесткого ограничения скорости в системе, откуда поступают данные t2, я пытаюсь очистить их перед выполнением вызовов API.