Изначально вы намеревались объединить две таблицы и фильтры для строк, которые не совпадали в правой части объединения. Этот метод иногда называют анти-левое соединение .
Ваша попытка не удалась, потому что вам нужен left join
, а не (неявный) inner join
, и потому что вы не проверили должным образом недействительность (для этого требуется оператор is null
).
Фразы решения left join
выглядят следующим образом:
select c.*
from cars c
left join rentals r on r.car_id = c.car_id
where r.car_id is null
order by c.car_id
Обратите внимание, что я проверяю на недействительность столбец car_id
, а не pickup_date
- подойдет любой столбец, который не допускает значения NULL, однако я считаю, что намерение более четкое при использовании столбца соединения.