#sql
#sql
Вопрос:
Эйхо, мне нужно переписать следующий код без использования подзапроса:
SELECT country, region, name
FROM wcities
WHERE( country, region ) NOT IN ( SELECT country, code FROM regions )
AND country = 'IT'
AND region is NOT NULL;
Я попробовал это с:
select c.country, c.region, c.name
from wcities c
join regions r on c.country <> r.country AND c.region <> r.code
where c.country = 'IT'
AND c.region is NOT NULL;
Я понимаю, почему это не работает, но я не вижу, что мне нужно для этого.
Заранее спасибо 🙂
Комментарии:
1. Я также рекомендую
NOT EXISTS
болееLEFT JOIN / IS NULL
Ответ №1:
В качестве left join
это было бы:
SELECT c.country, c.region, c.name
FROM wcities c LEFT JOIN
regions r
ON r.country = c.country and r.region = c.region
WHERE r.country IS NULL AND
c.country = 'IT' AND
c.region is NOT NULL;
Тем не менее, я бы рекомендовал NOT EXISTS
для этой цели:
SELECT c.country, c.region, c.name
FROM wcities c
WHERE NOT EXISTS (SELECT 1
FROM regions r
WHERE r.country = c.country and r.region = c.region
) AND
c.country = 'IT' AND
c.region is NOT NULL;
Комментарии:
1. Вы не могли бы привести
NOT EXISTS
пример?