これから3回にわたってin,exists,joinを用いた【含まれる】の説明を行います。
実行した結果で得られる結果は同じですが、パフォーマンスに違いが・・・あるかどうかわかりません。
というのも、昔は in → exist → join と性能が良いことがわかっていたのですが、エンジンの進化とともに、この常識も変わってきているようです。
どちらにせよ1~2万件程度では気にしなくても良いことかもしれません。※あくまでデータ構造によりけりです
それではAKBが含まれる/含まれないといった観点で確認していきましょう。対象の確認ですが以下のクエリで事前に行います。
Select * From M_tag Where name Like '%AKB%'
M_tagのnameに【AKB】の文字が含まれているtagidは5,9,69の3個です。この3個のIDが
T_alocateで割り当たっているIDを探します。
in / exist / join の中で最も簡単な inから行います。
以下のように記述してください。
Select * From T_alocate
Where
tagid in
(
Select
tagid
From M_tag Where
name Like '%AKB%'
)