我沒有看到循環中'where'條件改變。每次您執行「WHERE column ='something'」時,它將匹配並替換所有行,覆蓋每個先前更新的ID。
更新:
我們有些人在同一時間寫了類似的迴應。我應該打更多的時間之前,「添加」
對於它的價值,如果這是一個一次性的修復工作再上一個表順序ID「刷新」,你可以做到這一點與直MySQL的:
mysql> select * from foo;
+------+------+
| id | name |
+------+------+
| 0 | aaa |
| 0 | bbb |
| 0 | ccc |
| 0 | ddd |
+------+------+
4 rows in set (0.00 sec)
mysql> set @ct=0;
Query OK, 0 rows affected (0.00 sec)
mysql> update foo set id=(@ct:[email protected]+1);
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> select * from foo;
+------+------+
| id | name |
+------+------+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 4 | ddd |
+------+------+
4 rows in set (0.00 sec)
「按訂單」使用的,如果你喜歡,例如:
mysql> update foo set id=(@ct:[email protected]+1) order by name
如果你的where條件是** static **,你不會覆蓋相同的行/行嗎? – Nishant 2011-01-27 16:11:37
在你的例子中,它會一遍又一遍地更新相同的行,所以最後的ID將是3,3,3。你能發佈你的實際代碼嗎? – 2011-01-27 16:12:44
缺少某些東西。如果所有行在列列中都有內容,則所有行都以ID 3結尾。這是確切的代碼嗎?你能列出前後的表格行嗎? – 2011-01-27 16:45:22