【问题标题】:1287 user variables within expressions is deprecated - query rewrite表达式中的 1287 个用户变量已弃用 - 查询重写
【发布时间】:2020-05-20 10:33:26
【问题描述】:

我正在使用此查询来更新行并获取更新的 ID。但在 mysql 更新后,我收到此警告:“1287 在表达式中设置用户变量已被弃用,将在未来版本中删除。考虑替代方案:'SET variable=expression, ...', or 'SELECT expression(s) INTO变量'”。如何重写我的查询以使其与未来的 mysql 版本兼容?

SET @ids_1012:=NULL;

WITH cte AS 
(SELECT a.id FROM a
INNER JOIN b ON a.sha1=b.sha1
WHERE state=0 
ORDER BY `a`.`priority` DESC LIMIT 16) 
UPDATE a
INNER JOIN cte USING(id)
SET state=1 
AND (SELECT @ids_1012:=CONCAT_WS(',', id, @ids_1012));

SELECT @ids_1012;

【问题讨论】:

    标签: mysql sql-update


    【解决方案1】:

    row_number() 和 rank() 是我希望有人在我尝试修复此 MySQL 错误时告诉我的函数。

    [1287] 不推荐在表达式中设置用户变量,并且 将在未来的版本中删除。考虑替代方案:'SET variable=expression, ...' 或 'SELECT 表达式 INTO 变量'。

    【讨论】:

      猜你喜欢
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 2017-06-10
      • 1970-01-01
      相关资源
      最近更新 更多