使用exists
:
select e.name, e.job_id, e.sal
from emp e
where exists (select 1
from dept d join
location L
on d.location_id = L.location_id
where l.city = 'US' and d.dept_id = e.dept_id
);
あなたはWHERE
句にサブクエリをカバーdocumentation、を参照することができます。
このクエリは、米国に所在する部署でどのような従業員が働いているかという質問に答えているようです。サブクエリを使用してFROM
句でこれを行うこともできます。
select e.name, e.job_id, e.sal
from emp e join
(select distinct d.dept_id
from dept d join
location L
on d.location_id = L.location_id
where l.city = 'US'
) d
on d.dept_id = e.dept_id;
"US"は通常都市とはみなされません。
EDIT:明らか
、部署が一つだけの場所を持つことができる場合は、「半参加は、」必要はありません。 SELECT DISTINCT
はちょうどSELECT
になります。 。 。あるいは、Duduの答えのようにJOIN
を使うことができます。どんな場合でもEXISTS
が動作します。多くのデータベースでは良い(時には最高のパフォーマンス)があります。私はHiveのパフォーマンスへの影響についてはわかりません。
あなたはまだここにいますか? –