WHERE IN 句を利用する構造化照会言語 (SQL) ステートメントでは、返される行が常に順序に従っているとは限りません。
これを修正するには、FIELD() 関数を ORDER BY 句と組み合わせて使用します。 FIELD() 関数は、IN 句内の指定された値の順序に基づいて各行に位置を割り当てます。この割り当てられた位置に従って行を並べ替えることで、WHERE IN 句の元の順序を維持できます。
たとえば、次の SQL クエリを考えてみましょう。
SELECT * FROM table WHERE id IN (118, 17, 113, 23, 72);
このクエリは、 WHERE IN 句で指定された順序を無視して、ID 列に基づいて行を昇順で並べます。 IN 句で指定された順序で行を取得するには、次のクエリを実行します。
SELECT * FROM table WHERE id IN (118, 17, 113, 23, 72) ORDER BY FIELD(id, 118, 17, 113, 23, 72);
このクエリでは、ORDER BY 句が値の順序 (118、17、 113、23、72) は FIELD() 関数で指定されます。したがって、返される行は、WHERE IN 句で定義されたシーケンスに従います。
以上がWHERE IN 句を使用して SQL クエリの行順序を維持する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。