1. ホーム
  2. mysql

[解決済み] Mysqlの特定のID値による順序付け

2022-05-15 07:35:09

質問

order by (ID=1,5,4,3) のように、あらかじめ定義されたカラム値 (ID) を使用して、mysql で "order by" でソートすることは可能ですか。

の アップデートを行います。 mysqlの乱用について ;-) なぜこれが必要なのかを説明しなければならないのですが...。

私は私のレコードが5分ごとにランダムに並べ替えを変更したい。私は、異なる、ランダムなソート順序を置くためにテーブルを更新するcronタスクを持っています。ただ、1つの問題があります! ページネーションです。私のページに来た訪問者がいて、私は彼に最初の20の結果を与える。彼は6分待って2ページ目に行き、ソート順がすでに変更されていたため、間違った結果を得ることになります。

そこで私は、その人が私のサイトに来た場合、すべてのIDをセッションに置き、その人が2ページ目にいるとき、ソートがすでに変更されていても、正しいレコードを取得することを考えました。

他に何か良い方法はないでしょうか?

どのように解決するのですか?

ORDER BY関数とFIELD関数を使用することができます。 参照 http://lists.mysql.com/mysql/209784

SELECT * FROM table ORDER BY FIELD(ID,1,5,4,3)

これは フィールド() 関数、Which "str1、str2、str3、...のリスト中のstrのインデックス(位置)を返します。strが見つからない場合は0を返す"とある。つまり、実際にはこの関数の戻り値である、与えられたセット内のフィールド値のインデックスで結果セットをソートすることになります。