首頁 >資料庫 >mysql教程 >mysql根據時間排序,更新某欄位值

mysql根據時間排序,更新某欄位值

WBOY
WBOY原創
2016-08-23 09:01:551857瀏覽

mysqlsql資料庫

現在有一張表,表中已經有4000條數據,其中有一個字段為order_id,
另一個字段為pub_time ,原來order_id 是根據數據插入順序自動+1的,現在我想根據pub_time遞增,
更新order_id的值為遞增,有什麼好方法嗎? ? ?不是更新新加的資料,是更新表中現有的4000條資料

回覆內容:

mysql庫對吧,直接上腳本:
update Table t
inner join
(SELECT @rownum := @rownum + 1 AS rank, t.order_id
FROM Table t, (SELECT @rownum := 5000) r
order by pub_time asc) c on 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語句。 。至少我是沒有想出來能用一條update語句解決。

沒明白你的意思。你是想根據pub_time遞增的值 來 更新order_id的值?

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn