web-dev-qa-db-fra.com

Comment mettre à jour toutes les lignes de la table MySQL en même temps?

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?

27
user664168

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
; 
27
Bohemian
update mytable set online_status = 'online'

Si vous souhaitez affecter différentes valeurs, vous devez utiliser la technique TRANSACTION.

24
heximal

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
7
inorganik

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É

0
Kent Allen Sison

Ajoutez simplement des paramètres, séparés par une virgule:

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

voir aussi le lien MySQL UPDATE

0
Saravanan Nandhan

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;
0
PriME