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中,如果你想要插入一条带有自增主键的数据,你可以采取以下步骤: 1. 首先,确保你想要插入数据的表已经设置了一个自增的主键字段。这通常是通过在创建表时使用`AUTO_INCREMENT`属性来实现的。例如: ```sql CREATE TABLE example_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), description TEXT ); ``` 在这个例子中,`id`字段被设置为自增主键。 2. 当插入数据时,你可以省略自增主键字段的部分。MySQL数据库将自动为该字段分配下一个可用的自增。例如: ```sql INSERT INTO example_table (name, description) VALUES ('example_name', 'example_description'); ``` 这条`INSERT`语句没有指定`id`字段,因为它是自增的,数据库会自动填充。 3. 如果你想要明确地插入一个特定的自增ID,尽管这通常不是推荐的做法,但也是可以实现的。你可以直接在`INSERT`语句中指定自增字段,但需要注意,这可能会导致与数据库中现有的自增发生冲突。例如: ```sql INSERT INTO example_table (id, name, description) VALUES (1, 'example_name', 'example_description'); ``` 这条语句会将`id`设置为1,并插入一条数据。但如果表中已经存在ID为1的数据,或者已经有数据的ID大于1,这样做可能会产生问题。 请注意,不要在有多个客户端或多个会话同时插入数据时手动设置自增ID,因为这可能会导致自增ID发生冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值