ホームページ  >  記事  >  データベース  >  mysqlは時間に従ってソートし、フィールド値を更新します

mysqlは時間に従ってソートし、フィールド値を更新します

WBOY
WBOYオリジナル
2016-08-23 09:01:551802ブラウズ

mysqlsql データベース

これで、4000 個のデータを含むテーブルがあります。フィールドの 1 つは order_id で、もう 1 つのフィールドはデータの挿入順序に基づいて自動的に +1 されることがわかります。 pub_time に基づいてそれを増分するには、
order_id の値を更新して増やす良い方法はありますか? ? ?新しく追加されたデータを更新するのではなく、テーブル内の既存の 4000 データを更新します

返信内容:

mysql ライブラリですよね? スクリプトをアップロードするだけです:

テーブル 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;

基本的なロジックは、pub_time に基づいてシリアル番号をソートおよび生成し、元のテーブルに更新することです。

ここで注意すべき点は、更新プロセス中の order_id 主キーの競合を避けるために、rank の初期値をより大きく設定するのが最善であるということです。ここでの rowrum の初期値は 5000 です。

SQL コマンドにあまり詳しくないので、それが機能するかどうかはわかりません。そうであれば、php でスクリプトを作成すれば問題ありません。

つまり、order_id はデータの挿入時に自動インクリメントされるように設定されていましたが、pub_time の値に従ってデータを並べ替えて、order_id の値を再更新したいということですね。 。 ?

これが私の言いたいことであれば、SQL ステートメントを使用する代わりにコードを使用して問題を解決する必要があります。 。少なくとも、更新ステートメントでそれを解決する方法はわかりません。

何を言っているのか分かりません。 pub_time の増分値に基づいて order_id の値を更新しますか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。