我本质上想在我的mysql数据库中创建一个"全局变量"。
所以我有一个包含两个字段的表:
ID
GlobalNumber
我正在做这个讽刺:
UPDATE that_table SET GlobalNumber=GlobalNumber+1 WHERE ID=whatever
SELECT GlobalNumber FROM that_table WHERE ID=whatever;
但我确信有一种方法可以用一个陈述来做到这一点。 我尝试的任何事情都会给我一个语法错误。
如何在一条生产线上完成整个操作?
update
和select
语句不能一起运行。
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
。