Mysql
 sql >> Base de données >  >> RDS >> Mysql

mise à jour en bloc d'une liste de valeurs à partir d'une liste d'identifiants

Voici une façon de le faire en utilisant one requête. Ce ne sera pas la requête la plus jolie, mais ce n'en sera qu'une.

<?php

$id_list = implode(',', $ids);
$whens = implode(
    "\n    ",
    array_map(
        function ($id, $value) {
            return "WHEN {$id} THEN {$value}";
        },
        $ids,
        $values
    )
);

$sql = "
    UPDATE value
    SET value = CASE id
    {$whens}
    END
    WHERE id IN ({$id_list})
";
?>

Voir mon SQLFiddle modifié .