Comment mettre à jour toutes les lignes de la table MySQL en même temps?
Par exemple, j'ai la table:
id | ip | port | online_status |
1 | ip1 | port1 | |
2 | ip2 | port2 | |
3 | ip3 | port3 | |
4 | ip4 | port4 | |
5 | ip5 | port5 | |
Je prévois de créer cronjob et de surveiller certains serveurs, mais je ne sais pas exactement comment les mettre à jour simultanément à partir de la table. Quels sont quelques exemples sur la façon de faire cela?
Omettez la clause where
:
update mytable set
column1 = value1,
column2 = value2,
-- other column values etc
;
Cela donnera les mêmes valeurs à toutes les lignes.
Cela peut ne pas être ce que vous voulez - considérez truncate
alors une masse insert
:
truncate mytable; -- delete all rows efficiently
insert into mytable (column1, column2, ...) values
(row1value1, row1value2, ...), -- row 1
(row2value1, row2value2, ...), -- row 2
-- etc
;
update mytable set online_status = 'online'
Si vous souhaitez affecter différentes valeurs, vous devez utiliser la technique TRANSACTION.
La valeur NULL par défaut pour un champ est "not null". Vous devez donc le définir sur "null" avant de pouvoir définir la valeur de ce champ pour un enregistrement sur null. Ensuite vous pouvez:
UPDATE `myTable` SET `myField` = null
Tu peux essayer ça,
UPDATE *tableName* SET *field1* = *your_data*, *field2* = *your_data* ... WHERE 1 = 1;
Eh bien, dans votre cas, si vous souhaitez mettre à jour votre statut de statut en ligne, vous pouvez essayer ceci,
UPDATE thisTable SET online_status = 'Online' WHERE 1 = 1;
J'espère que ça aide. :RÉ
Ajoutez simplement des paramètres, séparés par une virgule:
UPDATE tablename SET column1 = "value1", column2 = "value2" ....
voir aussi le lien MySQL UPDATE
je veux juste ajouter un moyen supplémentaire de mettre une condition dans la clause where
qui est toujours vraie, pour toutes les colonnes
UPDATE tablename SET online_status=0 WHERE 1=1;
et comme @bohemian y a déjà bien répondu, il suffit simplement d’omettre la clause where
UPDATE tablename SET online_status=0;