我有这样的查询:
UPDATE `portal_dyslektyczny`.`questions` AS `Question` SET `Question`.`order` = `Question`.`order` - (`Question`.`order` - 3) + 1 WHERE `Question`.`order` > 3 AND `Question`.`question_group_id` = 1;
即使所有行都按升序排列
+----+-------+-------------------+
| id | order | question_group_id |
+----+-------+-------------------+
| 74 | 6 | 1 |
| 75 | 7 | 1 |
| 76 | 8 | 1 |
+----+-------+-------------------+
但是当我运行查询表时这样结束
+----+-------+-------------------+
| id | order | question_group_id |
+----+-------+-------------------+
| 74 | 4 | 1 |
| 75 | 4 | 1 |
| 76 | 4 | 1 |
+----+-------+-------------------+
我得到的每一行值的变化应该是这样的
ID: 74
`Question`.`order` = 6 - ( 6 - 3) + 1;
ID: 75
`Question`.`order` = 7 - ( 7 - 3) + 1;
等等。
但事实并非如此。看起来它只从第一行获取值。有人知道为什么吗?
最佳答案
检查您的公式 - 在所有情况下它都解析为 4。
x - (x - 3) + 1 = 4
关于Mysql更新只从第一行获取数据,是bug吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075230/