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的值?