MySQL "IN" クエリでの順序の維持
MySQL クエリで結果をフィルタリングするために "IN" 演算子を使用する場合、結果は、「IN」句で指定された値の順序と必ずしも一致しない場合があります。これは、MySQL がデフォルトでは結果の順序を保証しないためです。
「IN」クエリで結果の順序を維持するには、次のアプローチを使用できます:
FIELD 関数の使用
FIELD 関数を使用すると、結果の順序を指定できます。カンマで区切られた値のリストを 2 番目の引数として受け取り、リスト内で一致する値の位置を返します。たとえば、次のクエリは、「IN」句で指定された順序で結果を返します。
SELECT * FROM foo f WHERE f.id IN (2, 3, 1) ORDER BY FIELD(f.id, 2, 3, 1);
FIELD への引数リストは可変長にすることができ、必要な数の値を指定できます。
注:
ORDER BY FIELD メソッドは、値が次のような単純なクエリに対して機能します。 「IN」句の内容は事前にわかっています。ただし、値が動的である場合、または別のデータ ソースから取得された場合、この方法は適切ではない可能性があります。
以上がMySQL の「IN」クエリで結果の順序を保証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。