Как обновить все строки таблицы MySQL одновременно?
Как мне обновить все строки таблицы MySQL в одно и то же время?
Например, у меня есть таблица:
id | ip | port | online_status |
1 | ip1 | port1 | |
2 | ip2 | port2 | |
3 | ip3 | port3 | |
4 | ip4 | port4 | |
5 | ip5 | port5 | |
Я планирую создавать cronjob и контролировать некоторые серверы, но я точно не знаю, как их все обновить из таблицы в одно и то же время. Каковы некоторые примеры того, как это сделать?
Ответы
Ответ 1
Опустите предложение 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
;
Ответ 2
update mytable set online_status = 'online'
Если вы хотите назначить разные значения, вы должны использовать технику TRANSACTION.
Ответ 3
Значение по умолчанию для поля "не равно нулю". Поэтому вы должны установить его в "null", прежде чем вы сможете установить для этого значения поля для любой записи значение null. Затем вы можете:
UPDATE `myTable` SET `myField` = null
Ответ 4
UPDATE dummy SET myfield=1 WHERE id>1;