2013-02-25 113 views
0

我有这样的查询: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; 

等。

不是。它看起来像只从第一行获取值。有人知道为什么吗?

+0

呼应您的SQL查询到浏览器,当你运行它,结果贴在这里,所以我们可以来看看。 – Mike 2013-02-25 19:51:57

+0

回声查询是在顶部的问题。在查询运行之前和之后给出表格。 – 23kulpamens 2013-02-25 19:54:21

+1

所以...... 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

回答

3

检查你的公式 - 它在所有情况下都解析为4。

X - (X - 3)+ 1 = 4

相关问题