我正在使用此查询来更新行并获取更新的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;
答案 0 :(得分:0)
row_number()和rank()是我希望有人在尝试修复此MySQL错误时会告诉我的功能。
[1287]不赞成在表达式中设置用户变量,并且 在将来的版本中将被删除。考虑替代方案:'SET variable = expression,...'或'SELECT expression(s)INTO 变量”。