Mysql更新仅从第一行获取数据,是否是bug?
问题描述:
我有这样的查询:Mysql更新仅从第一行获取数据,是否是bug?
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
呼应您的SQL查询到浏览器,当你运行它,结果贴在这里,所以我们可以来看看。 – Mike 2013-02-25 19:51:57
回声查询是在顶部的问题。在查询运行之前和之后给出表格。 – 23kulpamens 2013-02-25 19:54:21
所以...... 6-(6-3)+ 1 AND 7-(7-3)+ 1 AND 8-(8-3)+ 1 ALL等于4.这没有错误,这是算术。如果你继续100 - (100-3)+1仍然等于4. – 2013-02-25 19:55:30