Например:
name | age
Joe 21
Ben 21
Joe 26
Мне нужны имена, где возраст равен 21, но не 26. В этом примере Бен должен быть единственным результатом. Я даже не знаю, с чего начать. Может ли кто-нибудь объяснить это? Благодарю.
попробуйте это, используя NOT EXISTS
select * from table t
where age = 21
and not exists (
select 1
from table x
where x.name = t.name
where age <> 21
)
Если вам просто нужны имена, вы можете сделать:
выбрать имя
from t
group by name
having sum( age = 21 ) > 0 and
sum( age = 26) = 0;
WHERE name NOT IN (...)
Как вы думаете, что должно быть внутри(...)
?