更新select语句中的表

Per*_*ing 5 mysql sql

有没有办法更新mysql选择查询的select_expr部分中的表.这是我想要实现的一个例子:

SELECT id, name, (UPDATE tbl2 SET currname = tbl.name WHERE tbl2.id = tbl.id) FROM tbl;
Run Code Online (Sandbox Code Playgroud)

这给了我一个mysql错误,但我不明白为什么这不应该是可能的,只要我不改变tbl.

编辑:我将澄清为什么我不能使用普通的构造.

以下是我正在研究的问题的更复杂的例子:

SELECT id, (SELECT @var = col1 FROM tbl2), @var := @var+1, 
(UPDATE tbl2 SET col1 = @var) FROM tbl WHERE ...
Run Code Online (Sandbox Code Playgroud)

所以我基本上处于这样一种情况:我在select语句中递增一个变量,并且想要反映这个变化,因为我在选择行时因为我在执行期间使用了这个变量的值.这里给出的例子可能可以通过其他方式实现,但是由于存在太多不必要的代码,我不会在这里发布的真实示例需要此功能.

Wel*_*bog 4

如果您的目标是每次查询 tbl1 时更新 tbl2,那么最好的方法是创建一个存储过程来执行此操作并将其包装在事务中,如果需要原子性,可能会更改隔离级别。

您不能在选择中嵌套更新。