不建议使用表达式中的1287个用户变量-查询重写

时间:2019-07-17 10:25:14

标签: mysql sql-update

我正在使用此查询来更新行并获取更新的ID。但是在mysql更新之后,我收到以下警告:“不赞成在表达式中设置用户变量1287,并将在以后的版本中删除它。请考虑替代方法:'SET variable = expression,...'或'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;

1 个答案:

答案 0 :(得分:0)

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

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