SQL IN() 句を使用して順序を維持します
結果を並べ替える場合、結果を IN() 句で指定された値の順序と一致させるのが困難な場合があります。この問題はサブクエリまたは一時テーブルを使用して解決できますが、より効率的な解決策はありますか?
MySQL では、FIELD() 関数が実行可能なオプションを提供します。 FIELD() 関数を利用すると、IN() 句の値の順序に基づいて並べ替えを直接操作できます。
<code class="language-sql">SELECT name, description, ... FROM ... WHERE id IN([ids, 无序]) ORDER BY FIELD(id, [ids, 有序])</code>
FIELD() 関数は、最初の引数として渡された値の提供されたリスト内のインデックスを決定します。返されるインデックスは、リスト内の値の順序を表します。
例:
<code class="language-sql">FIELD('a', 'a', 'b', 'c') -- 返回 1 FIELD('a', 'c', 'b', 'a') -- 返回 3</code>
FIELD() 関数を使用し、IN() 句と FIELD() 関数内の値の対応する順序を維持することにより、結果の順序を目的の順序と効果的に一致させることができます。
以上がSQL の IN() 句を使用するときに順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。