update number multiple large fast ejemplo duplicate batch mysql sql-update bulk

mysql - number - on duplicate key update sql server



ActualizaciĆ³n masiva de mysql con donde declaraciĆ³n (4)

La solución más sencilla en su caso es usar la construcción de ON DUPLICATE KEY UPDATE . Funciona muy rápido, y hace el trabajo de manera fácil.

INSERT into `table` (id, fruit) VALUES (1, ''apple''), (2, ''orange''), (3, ''peach'') ON DUPLICATE KEY UPDATE fruit = VALUES(fruit);

o utilizar la construcción CASE

UPDATE table SET column2 = (CASE column1 WHEN 1 THEN ''val1'' WHEN 2 THEN ''val2'' WHEN 3 THEN ''val3'' END) WHERE column1 IN(1, 2 ,3);

¿Cómo actualizar los datos mysql a granel? Cómo definir algo como esto:

UPDATE `table` WHERE `column1` = somevalues SET `column2` = othervalues

Con algunos valores como:

VALUES (''160009''), (''160010''), (''160011'');

y otros valores:

VALUES (''val1''), (''val2''), (''val3'');

tal vez es imposible con mysql? un script php?


Puedes usar implode para actualizar masivamente mysql con la instrucción where

$requete = $pdo->prepare("update table_name set field = 1 where id in(".implode('', '', $ids).")"); $requete->execute();

$ ids es una matriz


Si los datos "masivos" que tiene son dinámicos y provienen de PHP (después de todo, los etiquetó), entonces la consulta tendría un aspecto similar al siguiente:

INSERT INTO `foo` (id, bar) VALUES (1, ''pineapple''), (2, ''asian pear''), (5, ''peach'') ON DUPLICATE KEY UPDATE bar = VALUES(bar);

y el PHP para generar esto a partir de una matriz existente (asumiendo que la matriz tiene un formato como:

$array = ( somevalues_key => othervalues_value );

) se vería algo como esto (de ninguna manera el mejor (no se trata de escapar o sanear los valores, por ejemplo), solo un ejemplo rápido):

$pairs = array(); foreach ($array as $key => $value) { $pairs[] = "($key, ''$value'')"; } $query = "INSERT INTO `foo` (id, bar) VALUES " . implode('', '', $pairs) . " ON DUPLICATE KEY UPDATE bar = VALUES(bar)";


Si tiene datos en formato de matriz, intente esto

y su consulta es como "UPDATE table WHERE column1 = ? SET column2 = ?"

luego configúralo como abajo

foreach($data as $key => $value) { $query->bind_param(''ss'', $key, $value); $query->execute(); }

Espero que funcione.

Referencia de this .