なぜ私たちが使うのか疑問に思っていました
where column=id
対
where column in (id)
最初の ID は 1 つの ID のみを許可し、2 番目の ID は複数の ID を許可することはわかっていますが、単一列の検索でも常に in を使用しないのはなぜですか?
言い換えれば、なぜ「(id) のどこの列」を常に使用するとは限らないのでしょうか?
なぜ私たちが使うのか疑問に思っていました
where column=id
対
where column in (id)
最初の ID は 1 つの ID のみを許可し、2 番目の ID は複数の ID を許可することはわかっていますが、単一列の検索でも常に in を使用しないのはなぜですか?
言い換えれば、なぜ「(id) のどこの列」を常に使用するとは限らないのでしょうか?
2つは本質的に同じであるため、交換可能です。どちらを使用するかは個人的な好みです。
個人的には、=
複数の値をチェックしないことがわかっている場合に使用します。IN
後でクエリを変更してリストに新しい値を追加する可能性が高い場合に使用します。
パフォーマンスが問題にならない場合は、代わりに、より簡潔で入力が少なくて済むのでIN
使用することがあります。REGEXP
WHERE column REGEXP '^(value1|value2)$'
また
WHERE column REGEXP '[[:<:]](value1|value2)[[:>:]]'
もちろん、あまり知られていない「null-safe」等式演算子<=>
:
WHERE column <=> id
IN
同等のバージョンはありません。