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

时间:2011-08-09 08:31:48

标签: mysql

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

例如,我有表:

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

我打算创建cronjob并监控一些服务器,但我不知道如何从表中同时更新它们。有关如何做到这一点的一些例子?

7 个答案:

答案 0 :(得分:28)

省略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
; 

答案 1 :(得分:25)

update mytable set online_status = 'online'

如果要分配不同的值,则应使用TRANSACTION技术。

答案 2 :(得分:7)

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

UPDATE `myTable` SET `myField` = null

答案 3 :(得分:0)

我只是想在where子句中添加另一种方法,对于所有列,该条件始终为真

UPDATE tablename SET online_status=0 WHERE 1=1;

并且@bohemian已经很好地回答了它,只是省略了where子句

 UPDATE tablename SET online_status=0;

答案 4 :(得分:0)

你可以试试这个,

UPDATE *tableName* SET *field1* = *your_data*, *field2* = *your_data* ... WHERE 1 = 1;

如果您想将online_status更新为某个值,那么您可以试试这个,

UPDATE thisTable SET online_status = 'Online' WHERE 1 = 1;

希望它有所帮助。 :d

答案 5 :(得分:0)

只需添加参数,用逗号分隔:

UPDATE tablename SET column1 = "value1", column2 = "value2" ....

也可以看到链接 MySQL UPDATE

答案 6 :(得分:-1)

UPDATE dummy SET myfield=1 WHERE id>1;