MySQL の "IN" クエリで指定された順序を保持する
MySQL を使用してデータをクエリする場合、"IN" 演算子を使用するとレコードに基づいて選択できます一連の値について。ただし、これらのクエリのデフォルトの動作では、指定された値の順序が維持されないことに注意することが重要です。
問題:
自動インクリメントされる主キーを持つテーブルでは、「IN」クエリの結果が、指定された値の順序ではなく主キーに基づいて並べられる状況が発生することがあります。結果の順序を保持したい場合、これは問題になる可能性があります。
解決策:
希望の順序を実現するには、次の FIELD() 関数を利用できます。 ORDER BY 句と組み合わせて使用します。 FIELD() 関数は、引数リストに表示される順序に基づいて値に位置を割り当てます。以下に例を示します。
SELECT * FROM foo f WHERE f.id IN (2, 3, 1) ORDER BY FIELD(f.id, 2, 3, 1);
このクエリでは、FIELD() の引数リストで、結果を表示する順序を指定します。 ORDER BY 句は、FIELD() によって割り当てられた位置に基づいて結果を並べ替えます。
説明:
FIELD() 関数は、値に対する次の位置:
このメソッドを使用すると、 「IN」クエリの結果の順序が、指定された値の順序と一致していることを確認できます。これは、順序付けられたデータ セットを扱うシナリオや、レコード間の特定の関係を維持したい場合に特に役立ちます。
以上がMySQL の「IN」クエリで値の順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。