私はオラクルIN
と混同していEXISTS
ます。以下の要件があります。
名前が入っているすべての従業員を取得する必要があります-
select * from emp where ename in('smith','brown','john','johnson');
ここは使えEXISTS
ますか?また、IN
句には 1000 の制限があります。EXISTS
また、そのような制限はありますか?
ありがとう!
IN
一致する値のリストを選択します。EXISTS
true や false などのブール値を返します。Exists は in よりも高速です。
例
の
select ename from emp e where mgr in(select empno from emp where ename='KING');
存在する
select ename from emp e
where exists (select 1 from emp where e.mgr = empno and ename = 'KING');
簡単に言えば、EXISTS
通常、基準を満たす行が別の(または同じ)テーブルに存在するかどうかを確認するために使用されます。
使用するSQLEXISTS
は次のようになります。
select *
from emp e
where exists(select * from emp e2 where e.empno = e2.empno and e2.ename in ('smith', 'brown', 'john', 'johnson'))
だからあなたはそれがあなたがここで必要としているものではないことがわかります