2011-08-09 50 views
22

如何在同一時間更新所有MySQL表格行?如何同時更新所有MySQL錶行?

例如,我有表:

id | ip | port  | online_status | 
1  | ip1 | port1  |    | 
2  | ip2 | port2  |    | 
3  | ip3 | port3  |    | 
4  | ip4 | port4  |    | 
5  | ip5 | port5  |    | 

我打算創建的cronjob和監視某些服務器,但我不知道究竟如何從表在同一時間全部更新。如何做到這一點的例子是什麼?

+0

你的數據來自哪裏,什麼是所涉及的數據/信息和你想更新什麼?從你寫的內容不太清楚。你永遠不可能真的在同一時間更新所有的行。 – Sleeperson

+0

您需要提供更多詳細信息,您希望如何更新?你需要更新哪些列/信息? – ajreal

回答

25

略去where條款:

update mytable set 
column1 = value1, 
column2 = value2, 
-- other column values etc 
; 

這將給所有行相同的值。

這可能不是你想要的 - 考慮truncate那麼質量insert

truncate mytable; -- delete all rows efficiently 
insert into mytable (column1, column2, ...) values 
(row1value1, row1value2, ...), -- row 1 
(row2value1, row2value2, ...), -- row 2 
-- etc 
; 
22
update mytable set online_status = 'online' 

如果要分配不同的值,你應該使用交易技巧。

7

字段的默認空值是「not null」。因此,必須先將其設置爲「空」,然後才能將任何記錄的字段值設置爲空。然後,你可以:

UPDATE `myTable` SET `myField` = null 
-1
UPDATE dummy SET myfield=1 WHERE id>1; 
+1

請嘗試通過添加一些解釋爲什麼您的代碼是問題的解決方案來避免代碼只回答。記住這個答案可以幫助未來的其他人,並且越多的信息越好。 –

+0

這實際上不會更新所有行 - 它不會更新ID爲1的位置。 – Ben