ホームページ >データベース >mysql チュートリアル >MySQL でデータベース結果を注文するときに特定のフィールド値に優先順位を付けるにはどうすればよいですか?
MySQL データベース結果の並べ替え: 特定のフィールド値を優先します
データベース テーブルの操作では、特定のフィールド値を持つレコードに優先順位を付けることが一般的な要件です。たとえば、次の列とデータを含むテーブルについて考えてみましょう:
id | name | priority |
---|---|---|
1 | core | 10 |
2 | core | 9 |
3 | other | 8 |
4 | board | 7 |
5 | board | 6 |
6 | core | 4 |
タスクは、priority
フィールドに基づいて結果を並べ替えることですが、name
が「core」に等しい行を優先します。目的の出力は次のとおりです:
id | name | priority |
---|---|---|
6 | core | 4 |
2 | core | 9 |
1 | core | 10 |
5 | board | 6 |
4 | board | 7 |
3 | other | 8 |
MySQL では、この並べ替えは FIELD()
関数を使用して実現できます。以下にいくつかの方法があります:
すべての値を完全に並べ替えます:
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core", "board", "other");</code>
このクエリは、FIELD()
関数で指定された順序に従って結果を並べ替え、最初に表示される値を優先します。
「コア」のみが優先されます:
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core") DESC;</code>
このクエリは、他のフィールド値に関係なく、DESC
を使用して name
が「core」に等しい行を優先します。
他の値の並べ替え順序を保持します:
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core") DESC, priority;</code>
このクエリは、最初に FIELD()
を使用して「コア」行に優先順位を付け、次に残りの行を通常の priority
順序で並べ替えます。
FIELD()
関数は、一致する値の 1 から始まるインデックスを返すか、値が見つからない場合は 0 を返すことに注意することが重要です。したがって、すべての可能な値が指定されていない限り、DESC
を使用する必要があります。
以上がMySQL でデータベース結果を注文するときに特定のフィールド値に優先順位を付けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。