如何同时更新所有MySQL表格行?
例如,我有表:
id | ip | port | online_status |
1 | ip1 | port1 | |
2 | ip2 | port2 | |
3 | ip3 | port3 | |
4 | ip4 | port4 | |
5 | ip5 | port5 | |
我打算创建cronjob并监控一些服务器,但我不知道如何从表中同时更新它们。有关如何做到这一点的一些例子?
答案 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)
答案 6 :(得分:-1)
UPDATE dummy SET myfield=1 WHERE id>1;