php – 批量更新ID列表中的值列表
发布时间:2020-12-13 16:19:43 所属栏目:PHP教程 来源:网络整理
导读:我经常面对这个问题,作为Oracle用户,玩 MySql. 是以下情况: 一个id列表(1,2,3,…,n) 值列表(‘val1′,’val2′,’val3′,’valn’)[值显然与这些值完全不同] 之前的2个列表已通过订购.这意味着首先传递的值对应于首先传递的id. 目标是更新具有相应id的表值
我经常面对这个问题,作为Oracle用户,玩
MySql.
是以下情况: >一个id列表(1,2,3,…,n) 目标是更新具有相应id的表值的所有值:val1应更新id 1,val2应更新id 2等…仅在一个查询中. 简单的解决方案是更新n次: UPDATE `value` SET `value`='val1' WHERE id = 1; UPDATE `value` SET `value`='val2' WHERE id = 2; UPDATE `value` SET `value`='val3' WHERE id = 3; ... UPDATE `value` SET `value`='valn' WHERE id = n; 但我很乐意批量更新这一切. sqlfiddle玩一下:http://sqlfiddle.com/#!2/d02e8 解决方法
以下是使用一个查询执行此操作的一种方法.它不是最漂亮格式的查询,但它只是一个.
<?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}) "; ?> 看我修改过的SQLFiddle. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |