MySQL データベースからデータを取得する場合、多くの場合、結果を特定の順序で並べ替える必要があります。順序。 IN() メソッドを使用すると、定義済みの値のリストに基づいてレコードを取得できますが、結果セット内の IN() 句の値の順序を維持する必要がある場合に問題が発生します。
問題:
順序付けられた ID 番号を含む PHP 配列があり、IN() メソッドを使用して MySQL から対応するレコードをフェッチしたいとします。 テーブル。ただし、これらのレコードは IN() 句で指定されているのと同じ順序で返される必要があります。
解決策:
これを解決できる強力な関数チャレンジはFIELD()です。これは主に文字列関数として知られていますが、数値データでも効果的に機能します。 FIELD() を使用すると、IN() 句で値の順序を指定でき、MySQL はそれに応じて結果を配置します。
例:
順序付けられた ID 番号を持つ次の PHP 配列を考えてみましょう。
$ids = [4, 7, 3, 8, 9];
記事という名前のテーブルから対応するレコードを取得します。 ID の順序を確認するには、次の MySQL クエリを使用できます。
SELECT * FROM articles ORDER BY FIELD(id, 3, 2, 5, 7, 8, 1);
このクエリでは、FIELD() 関数を使用して、2 番目のパラメータの値の順序に基づいて結果を並べ替えます。 IN() 句で指定された順序は [4, 7, 3, 8, 9] ですが、結果は 3, 2, 5, 7, 8, 1 として返されることが必要です。したがって、次の値を提供します。 FIELD() の 2 番目のパラメータとしてその順序で指定します。これにより、記事が希望の順序で返されることが保証されます。
以上がIN() と FIELD() を使用してカスタム シーケンスで MySQL クエリ結果を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。