FIND_IN_SET を使用したクエリ結果の順序のカスタマイズ
SELECT ステートメントが指定された ID の順序を保持すると予想するのは直感的かもしれませんが、次のようにします。デフォルトでは、MySQL は任意の順序で結果を返します。ただし、FIND_IN_SET 関数を使用する賢い手法を使用すると、この動作をオーバーライドして、結果にあらかじめ決められた順序を確立できます。
ID 7、2、5、9、および 3 を取得することを目的とした次のクエリについて考えてみましょう。 8:
SELECT id FROM table WHERE id in (7,2,5,9,8);
WHERE 句内の ID の順序に関係なく、結果は常にテーブルの内部順序で返されます。順序をカスタマイズするには、FIND_IN_SET 関数を利用できます。
SELECT id FROM table WHERE id in (7,2,5,9,8) ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
FIND_IN_SET の 2 番目の引数に目的の順序のカンマ区切りのリストを指定すると、実質的にランキングが作成されます。リスト内の各 ID の位置によって、結果セット内の順序が決まります。
たとえば、以下のクエリは、2 番目の引数で指定された順序で結果を並べ替えます。
SELECT id FROM table WHERE id in (7,2,5,9,8) ORDER BY FIND_IN_SET(id,"8,2,5,9,7");
これを使用します。この技術を使用すると、クエリ結果の順序を正確に制御できるため、事前定義された順序に基づいてデータを柔軟に配置できます。
以上がMySQL で特定の ID リストに基づいてクエリ結果を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。