Если вы рассматриваете внутреннее объединение как строки двух таблиц, которые удовлетворяют определенному условию, тогда противоположными будут строки в или таблице, которые этого не делают.
Например, следующее выберет всех людей с адресами в таблице адресов:
SELECT p.PersonName, a.Address
FROM people p
JOIN addresses a
ON p.addressId = a.addressId
Я полагаю, что "противоположным" этому было бы выбрать всех людей без адресов и все адреса без людей. Однако, похоже, это не то, о чем вы спрашиваете, вам, кажется, интересен только один компонент этого: все люди без адреса в таблице адресов.
Для этого лучше всего использовать левое соединение:
SELECT p.PersonName
FROM people p
LEFT JOIN addresses a
ON p.addressId = a.addressId
WHERE a.addressId IS NULL
Обратите внимание, что часто некоторые предпочитают писать это по-другому, поскольку, по их мнению, они более читабельны (однако по моему опыту с большими таблицами это работает хуже, чем описанным выше способом):
SELECT PersonName
FROM people
WHERE addressId NOT IN (SELECT addressId FROM addresses)