mysql在插入或更新的時候對一個字段賦遞增值


在我們有一個需求是更新某個表里面的某個字段,讓這個字段變成一個遞增的值,或者插入某個表中使得某些字段的值是遞增的。下面我們來看看具體的操作:

更改表字段為遞增

首先設置一個變量,初始值為任意數值,這里以0為例:

set @num:=0;

例如我們需要更新rank(排序)這個字段的值。我們可以這樣處理

update tablename set rank=(@num:= @num+1)

添加主鍵

同時也可以給一個沒有主鍵的數據表添加主鍵,例如給表test新加字段id,對這個id字段進行遞增操作,然后再設置為主鍵。

SET @r:=0;
UPDATE test SET id=(@r:=@r+1);

插入遞增數據

如果要是向一個表里面插入數據,可以如下操作,例如,我想向臨時表temp表中插入數據,並且保證temp中rank字段是遞增的,寫法如下:

start TRANSACTION;
SET @rank:= 20;
INSERT into tbl_live_tab_relation(type, tab_id, relate_id, rank, source)
SELECT 2,1, id, @rank:= @rank + 1, 0
from tbl_live_room
WHERE status=1 and id not in (
  SELECT relation.relate_id
from tbl_live_tab_relation as relation
WHERE relation.tab_id=1 AND relation.type=2
)
order by start_time DESC;
COMMIT;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM