小编dig*_*web的帖子

MYSQL - 警告:#1287 在表达式中设置用户变量已被弃用,并将在未来版本中删除

警告:#1287 在表达式中设置用户变量已被弃用,并将在未来版本中删除。考虑替代方案:“SET 变量 = 表达式,...”或“SELECT 表达式 INTO 变量”。

这是 MySQL 8.0.21 吐出的内容。该代码可以工作......但我也需要它在未来的版本中工作......所以我的问题是这个警告的正确方法是什么?

我需要将一个变量设置为某个数字(我将通过行的 ID 获得该数字)。我需要在每个 SET 语句中将其加 1。

我应该如何更改此代码以使警告消失?

SET @fromorder = (SELECT `order` FROM forms WHERE id=5);
/* SET @fromorder = 4;  - so this is the same in the example below */
UPDATE forms SET `order` = @fromorder := @fromorder + 1 WHERE `order` > -1 and `order` <= 4 ORDER BY `order` ASC;
SET @fromorder = null;
Run Code Online (Sandbox Code Playgroud)

据我了解,问题的根源在于:

`order` = @fromorder := @fromorder + 1
Run Code Online (Sandbox Code Playgroud)

我想这需要改变吗?

所以由此可知: …

mysql row-number window-functions

3
推荐指数
1
解决办法
3863
查看次数

标签 统计

mysql ×1

row-number ×1

window-functions ×1