如何同时更新所有MySQL表行?
例如,我有表:
id | ip | port | online_status |
1 | ip1 | port1 | |
2 | ip2 | port2 | |
3 | ip3 | port3 | |
4 | ip4 | port4 | |
5 | ip5 | port5 | |
Run Code Online (Sandbox Code Playgroud)
我打算创建cronjob并监视一些服务器,但我不确切知道如何从表中同时更新它们.有关如何做到这一点的一些例子?
Boh*_*ian 29
省略where
条款:
update mytable set
column1 = value1,
column2 = value2,
-- other column values etc
;
Run Code Online (Sandbox Code Playgroud)
这将为所有行提供相同的值.
这可能不是你想要的 - truncate
然后考虑一个质量insert
:
truncate mytable; -- delete all rows efficiently
insert into mytable (column1, column2, ...) values
(row1value1, row1value2, ...), -- row 1
(row2value1, row2value2, ...), -- row 2
-- etc
;
Run Code Online (Sandbox Code Playgroud)
hex*_*mal 26
update mytable set online_status = 'online'
Run Code Online (Sandbox Code Playgroud)
如果要分配不同的值,则应使用TRANSACTION技术.
字段的默认空值为"not null".因此,必须先将其设置为"null",然后才能将任何记录的字段值设置为null.然后你可以:
UPDATE `myTable` SET `myField` = null
Run Code Online (Sandbox Code Playgroud)