-4

重複の可能性:
MYSQL OR と IN のパフォーマンス

私は何が違うのだろうと思っていました:

SELECT * FROM table WHERE cat = 'cat1' OR cat = 'cat2' OR cat = 'cat3'

と:

SELECT * FROM table WHERE cat in ('cat1', 'cat2', 'cat3')

違いはありますか?私が試したところ、どちらも同じ結果が得られました。

4

3 に答える 3

2

それらは同一であり、すべてのステートメントIN()をリストすることを使用した簡略版です。OR

于 2013-02-01T15:41:27.367 に答える
1

IN()OR特に多くの句がある場合は、構文がはるかに短くなり、読みやすくなります。

于 2013-02-01T15:41:28.170 に答える
0

INで非常に簡単にできるが、 ではできないことがもう 1 つあります=

SELECT * 
FROM `table`
WHERE `column` IN (
    SELECT col_name
    FROM `table2` -- or the same table
    WHERE `some_column` = 5
)

したがって、基本的には別のテーブルのサブセットを検索しますが、これは便利な場合があります。

実際の使用法:

  • 別のテーブルに管理可能なユーザー タイプ (それぞれに独自の権限がある) のリストがあり、そのユーザー タイプが実際に存在することを強制したいとします。
于 2013-02-01T15:44:09.787 に答える