有个state字段的历史数据要更新。历史数据有第二级的新建更新删除三种状态,现在要把这些历史数据从第二级的状态update到第一级的新建更新删除状态,能不能一条sql完成呢?
可能表述的不清楚,我举个例子。历史数据state 是1,2,3三种值;现在要把state update 成4,5,6 而且1对应4,2对应5,3对应6这种的。
$sql="replace into ck52(CK5200,CK5100,CM1100,CK5103,CK5104,CK5209,CK5205,CK5206,CK5101,CK5107) values";
foreach ($arrearslist as $k=>$value){
$sql.="({$value['arreascost_id']},'${param['CK5100']}','{$param['CM1100']}','{$CK5103}','{$param['CK5104']}','1','{$value['startdate']}','{$value['enddate']}','{$value['amount']}','{$value['amount']}'),";
}
//去除sql语句的最后一个逗号
$sql = rtrim($sql,',');
$res=M()->execute($sql);
这个你要是再看不懂 那我就没办法了
你这是mybatis的foreach操作吧,这样感觉还不如单条语句更新的快呢。而且,我们用的是springJdbc
update table set state = state -3 where state > 3