[TIL]IN+サブクエリ、必要に応じてクエリを書き込む


sqlにはあまり考えずに使える文法があります.in (서브쿼리)の形態です

使用法


まず、基礎から説明すると、inがwhereセクションで複数のターゲットがカラムの値と一致するかどうかを決定するのに非常に有用である.
select *
from table
where columnA = 3 or columnA = 4 or columnA = 5
上記のクエリのようにorを用いて記述することができるが,値が大きいほどクエリが長くなり毒性が低くなる.
inを利用してこの問題を解決することができる.⬇
select *
from table
where columnA in (3,4,5)
まだいない.
select *
from table
where columnA <> 3 or columnA <> 4 or columnA <> 5
こんなに簡単に使えます
select *
from table
where columnA not in (3,4,5)
多重条件でなくても仕事ができる.
select *
from table
where columnA not in (3)
複数の条件が必要かもしれませんが、まだ分からない場合は、in+単一の条件に構成することが多いです.

in+サブクエリ


サブクエリとの使用方法を理解するには、次の2つのテーブルを考慮します.

Aには職員の名前と職位があり、Bには年齢と性別がある.
女性社員の名前とポジションを知りたいなら?
2つのテーブルをemployee IDでB.性別として署名することもできます.でも説明のためにin (서브쿼리)形を使いましょう
まず,Bテーブルで性別情報を用いて性別="F"のemployee IDを問い合わせる.
select employee_ID
from B
where gender = 'F'

このクエリの結果は、101、123を出力する.
Aテーブルのwhereセクションでは、複数の条件でemployee ID 101123を問合せた従業員が、所望の結果を得ることができる.
select *
from A
where employee_ID in (101, 123)
サブクエリを使用して次のように書き換えます.
つまり、101, 123の代わりにクエリーを使用します.
select *
from A
where employee_ID in (
			select employee_ID
			from B
			where gender = 'F'
            		)
結合はたまに複雑な考慮が必要な点があり、サブクエリは比較的簡単で直感的で、よく使用されています.
もちろん、サブクエリを使うのはよくない選択もあります.(注意:😆)