MySQL IN()
句からの順序付けされた結果の確保
特定の順序を維持しながら IN()
句を使用してデータを取得するのは難しい場合があります。 この問題は、IN()
句のデータ ソースが本質的に順序付けされていない場合に発生し、結果の並べ替えが予測不能になることがあります。 自動インクリメント ID を使用して一時テーブルを作成すると解決策は得られますが、複雑さが増します。
よりシンプルで効率的なアプローチは、MySQL の FIELD()
関数を使用します。 FIELD()
は、指定されたリスト内の値を検索し、その位置 (インデックス) を返します。 FIELD()
を ORDER BY
句に組み込むことにより、IN()
句の値に基づいて出力順序を決定します。
<code class="language-sql">SELECT name, description, ... FROM ... WHERE id IN ([ids, any order]) ORDER BY FIELD(id, [ids in desired order])</code>
句の元の順序に関係なく、FIELD()
関数の 2 番目の引数で指定された正確な順序で結果が返されることが保証されます。 IN()
は、FIELD()
値をそのインデックスに効果的にマッピングし、これらのインデックスを並べ替えに使用します。IN()
句を使用するときに結果の順序を制御する信頼性の高い方法を提供します。IN()
以上が「IN()」句を使用してMySQLクエリからの順序付けされた結果を保証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。