1287 表达式中的用户变量被废弃--查询重写。

问题描述 投票:1回答:1

我正在使用这个查询更新行,并获得更新的ID。但在mysql更新后,我得到了这个警告。"1287 在表达式中设置用户变量已被废弃,并将在未来的版本中删除。考虑替代方案。'SET variable=expression, ...', 或'SELECT expression(s) INTO variables(s)'"。我如何重写我的查询,使其与未来的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个回答
0
投票

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

[1287] 在表达式中设置用户变量已被废弃,并将在未来的版本中删除。请考虑其他替代方案。'SET variable=expression, ...',或者'SELECT expression(s) INTO variables(s)'。

© www.soinside.com 2019 - 2024. All rights reserved.