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