mysql - ORDER BY 和 UPDATE 查询

标签 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创建问题,但我想避免使用单独的查询来设置它们。

最佳答案

所有 SQL 更新均为 atomic ,所以你将更新所有内容或不更新任何内容,并且顺序没有区别,但我想我理解你想要做什么,为此你将需要多次更新,或者运行 cursor

关于mysql - ORDER BY 和 UPDATE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48215461/

相关文章:

mysql - mysql 按值排序

MYSQL ORDER BY 字段来自列表和其他表

mysql - 如何为不同领域的相似数据创建模式

php - Mysqli 查询不插入第一个值

mysql - 最后一行接近尾部时出错

php - 如何在查询中使用保留关键字

mysql - Mysql 中的嵌套情况

mysql - 找出两个不同查询 SQL 的总数之间的差异

java - 使用 JDBC 在 Mysql 中更新查询的问题

mysql - 使用 MySQL 选择查询以随机顺序对特定数据组的记录进行排序