2

SQL クエリで IN がどのように機能するかを知りたかっただけですか?

次のようなコードがあるとしましょう

select * from myTable WHERE id IN (5,9,2,4,6,3);

これは同等でしょうか

select * from myTable WHERE id = 5;
select * from myTable WHERE id = 9;
select * from myTable WHERE id = 2;
select * from myTable WHERE id = 4;
select * from myTable WHERE id = 6;
select * from myTable WHERE id = 3;

また

順番はランダム?


編集 1

ここで ORDER は という意味ではありませんORDER BY。最初に 5、次に 9、次に 2 という意味でした。

また

ランダムな順序とは、最初に 4 つ、次に 3 つ、次に 2 つという意味です。

私にお知らせください。

4

3 に答える 3

2

いいえ

MySQL では、バイナリ検索を使用してIN句が実行されます。参照

これは、検索がパフォーマンスのために最適化され、リストを順番にステップ実行しないことを意味します。

于 2012-11-19T17:20:58.543 に答える
0

順序はランダムです (技術的にはランダムではありませんが、確実に予測することはできません)。投稿したクエリは次と同等です。

SELECT * FROM myTable WHERE id = 5 OR id = 9 OR id = 2 OR id = 4 OR id = 6 OR id = 3

特定の順序が必要な場合は、ORDER BY句を使用する必要があります。仕様の値に使用する順序は関係ありませんIN

于 2012-11-19T17:16:34.537 に答える
0

いいえ、もっと具体的にする必要があります。個別のクエリで ID をクエリすると、答えはノーです。順序が必要な場合は、orderby 句を追加する必要があります。また、equal-to 演算子は常にランダムであるため、IN 演算子と equal-to を混在させると、where 句の順序が重要になります。

于 2012-11-19T17:20:12.057 に答える