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



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

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

ID
GlobalNumber

我正在做这个讽刺:

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

但我确信有一种方法可以用一个陈述来做到这一点。 我尝试的任何事情都会给我一个语法错误。

如何在一条生产线上完成整个操作?

updateselect语句不能一起运行。

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

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

像这样:

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

你可以像这样使用 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

相关内容

  • 没有找到相关文章

最新更新