如何同时更新所有MySQL表行?

use*_*168 29 mysql

如何同时更新所有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技术.


ino*_*nik 7

字段的默认空值为"not null".因此,必须先将其设置为"null",然后才能将任何记录的字段值设置为null.然后你可以:

UPDATE `myTable` SET `myField` = null
Run Code Online (Sandbox Code Playgroud)