SQL語句,使用case when 實現批量更新數據
實例一: 更新user表中id為1,2,3的記錄中的status字段當id=1時,status設為"正常";當id=2時,status設為"禁用";當id=3時,status設為"過期";
update user set
status = case id
when 1 then '正常'
when 2 then '禁用'
when 3 then '過期'
end
where id in (1,2,3);
實例二:更新user表中id為1,2,3的記錄中的status、rank字段
update user set
status = case id
when 1 then '正常'
when 2 then '禁用'
when 3 then '過期'
end,
rank = case id
when 1 then 1
when 2 then 2
when 3 then 3
end
where id in (1,2,3);
實例三:更新$data數組中的記錄數不確定時,使用sql拼接的形式
$ids = implode(",",array_column($data,'id')); //獲取所有要更新的記錄id
$sql = "update user set status = case id ";
foreach ($data as $item) {
$id = $item['id'];
$status = $item['status'];
$sql .= " when " . $id . " then " . $status;
}
$sql .= " end where id in (" . $ids . ")";