在mysql中制作全局、自动递增数字的最简单方法

问题描述 投票:0回答:2

我本质上想在我的 mysql 数据库中创建一个“全局变量”。

所以我有一个包含两个字段的表:

ID
GlobalNumber

我正在做这个嘲讽:

UPDATE that_table SET GlobalNumber=GlobalNumber+1 WHERE ID=whatever            
SELECT GlobalNumber FROM that_table WHERE ID=whatever;

但我确信有一种方法可以用一条语句来做到这一点。我尝试的任何操作都会给我带来语法错误。

我怎样才能在一行中完成整个操作?

mysql global-variables auto-increment
2个回答
1
投票

update
select
语句不能一起运行。

update
select
语句都是两种不同类型的DML(数据操作语言),不能组合在一起。

但是,您可以有选择地更新一些可以使用嵌套查询的元组。

类似这样的:

update that_table
set global_variable = global_variable + 1
where ID IN(Select ID from another_table);

0
投票

你可以像这样使用mysql的

last_insert_id()

UPDATE that_table SET GlobalNumber = last_insert_id(GlobalNumber+1) WHERE ID=whatever

然后在你用来连接 mysql 的库中通常有一些像

last_id
这样的函数会返回由
last_insert_id(expr)

设置的值

或者,如果您只想在下一个查询中使用该 GlobalNumber,您可以在执行更新时设置一个变量,如下所示:

UPDATE that_table SET GlobalNumber = @num := GlobalNumber+1 WHERE ID=whatever

然后在同一连接的后续查询中相关的地方使用

@num

© www.soinside.com 2019 - 2024. All rights reserved.