ホームページ >データベース >mysql チュートリアル >mysqlは時間に従ってソートし、フィールド値を更新します
mysqlsql データベース
これで、4000 個のデータを含むテーブルがあります。フィールドの 1 つは order_id で、もう 1 つのフィールドはデータの挿入順序に基づいて自動的に +1 されることがわかります。 pub_time に基づいてそれを増分するには、
order_id の値を更新して増やす良い方法はありますか? ? ?新しく追加されたデータを更新するのではなく、テーブル内の既存の 4000 データを更新します
テーブル t を更新します
内部結合
(SELECT @rownum := @rownum + 1 AS ランク、t.order_id
FROM テーブル t, (SELECT @rownum := 5000) r
pub_time asc) c で注文 c.order_id = t.order_id
set t.order_id = c.rank;
ここで注意すべき点は、更新プロセス中の order_id 主キーの競合を避けるために、rank の初期値をより大きく設定するのが最善であるということです。ここでの rowrum の初期値は 5000 です。
つまり、order_id はデータの挿入時に自動インクリメントされるように設定されていましたが、pub_time の値に従ってデータを並べ替えて、order_id の値を再更新したいということですね。 。 ?
これが私の言いたいことであれば、SQL ステートメントを使用する代わりにコードを使用して問題を解決する必要があります。 。少なくとも、更新ステートメントでそれを解決する方法はわかりません。
何を言っているのか分かりません。 pub_time の増分値に基づいて order_id の値を更新しますか?