Đây là một cách để thực hiện việc này bằng cách sử dụng one truy vấn. Nó sẽ không phải là truy vấn có định dạng đẹp nhất, nhưng nó sẽ chỉ là một.
<?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})
";
?>
Xem SQLFiddle đã được sửa đổi của tôi .