2013-02-25 73 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

相關問題