固定 ID 値を使用した MySQL 結果の並べ替え
質問: 事前定義されたセットを使用して MySQL の行を並べ替えるにはどうすればよいですか? ID 値を指定し、レコードが特定の順序で取得されるようにします (例: ID=1、5、 4, 3)?
背景: ユーザーは、ページネーションの問題を防ぐために、並べ替え順序を 5 分ごとに変更する動的並べ替えをデータベースに実装したいと考えています。ただし、並べ替えが更新された場合でも、結果の正しい順序を維持する方法が必要です。
回答:
これは、ORDER BY 句を使用して実現できます。 FIELD 関数:
SELECT * FROM table ORDER BY FIELD(ID, 1, 5, 4, 3);
FIELD 関数は、文字列のリスト内の指定された値の位置を返します。これを ORDER BY 句で使用すると、関数パラメータで指定された順序に基づいて結果を効果的に並べ替えることができます。この場合、レコードは ID=1、5、4、3 の順序で返されます。
説明:
FIELD 関数は、ID=1、5、4、3 のリストを処理します。値を配列として ID 化し、各値にインデックスを割り当てます。この関数は、各行の ID 列に一致する値のインデックスを返します。返されたインデックスによって順序付けすることにより、行は指定された ID 値と同じ順序で並べ替えられます。
追加の考慮事項:
このメソッドは、メンテナンスに効果的です。並べ替え順序、ページネーションについては、依然として慎重に検討する必要があります。ページネーション中に並べ替え順序が変更されると、結果がページ間で異なる場合があります。この問題を軽減するには、現在の並べ替え順序をセッションまたはページ リクエスト間で持続する別のメカニズムに保存することをお勧めします。
以上がMySQL の結果を事前に定義された ID の順序で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。