带有UPDATE查询的ORDER BY

时间:2018-01-11 20:40:29

标签: mysql sql-update sql-order-by

我想以特定顺序更新以下查询中的field1。在开始从较小的数字更新到最大的数字。 (简化名称)

UPDATE table t1, (SELECT @temp := 0) a, (SELECT @temp_2 := 0) b 
SET field1 = (CASE
    WHEN id = X THEN (@temp := @temp+1)
    WHEN id = Y THEN (@temp_2 := @temp_2+1)
END)
WHERE ( id = X OR id = Y )
ORDER BY field1 ASC;

我尝试使用ORDER BY,但我得到了错误Incorrect usage of UPDATE and ORDER BY

我理解这些, (SELECT @temp := 0) a, (SELECT @temp_2 := 0) b会产生问题,但我想避免使用单独的查询来设置它们。

1 个答案:

答案 0 :(得分:0)

所有SQL更新都是atomic,所以你会更新所有内容或者什么也没有,订单没有区别,但我想我明白你要做什么,为此你需要多次更新,或者跑过来一个cursor