zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    Mysql锁
    开源的13个Spring Boot 优秀学习项目!超53K星,一网打尽!
    大批量数据处理方法
    位运算题目
    限流算法
    linux进程管理之进程创建(三)
    Linux进程管理之状态(二)
    linux进程管理之概念(一)
    #error 、 #line 和 #pragma 的使用
    #undef 的用法
  • 原文地址:https://www.cnblogs.com/duhuo/p/6386331.html
Copyright © 2011-2022 走看看