如何通过在批处理更新中增加值来更新字段

时间:2018-09-29 06:05:20

标签: mysql codeigniter

到目前为止,我已经尝试过如下更新余额表。效果很好。

$values = array(
    array('id'=>10,'c1'=>101),
    array('id'=>11,'c1'=>102)
);
$this->db->update_batch('balance',$values,'id');

我想知道如何在更新批处理数组中更新字段值=先前值+新值,即 c1 = c1 + 101 。我发现

  

$ this-> db-> set('c1','c1 + 101',FALSE);

会有所帮助。但是我不知道如何在批处理操作中使用它。

我尝试过array('id'=>10,'c1'=>'c1 + 101'),但是它不起作用。

2 个答案:

答案 0 :(得分:1)

是的,您也可以使用update_batch进行此操作。

$data = [
         [
           'id' => 10 ,
           'c1' => '(c1+101)' ,
         ],
         [
          'id' => 11,
          'c1' => '(c1+102)' ,
         ]
    ];
   $this->db->set_update_batch($data,'id',FALSE);
   $this->db->update_batch('mytable',null,'id');

生成的查询:

UPDATE `mytable` SET c1 = CASE 
    WHEN id = 10 THEN (c1+101)
    WHEN id = 11 THEN (c1+102)
  ELSE c1 END
WHERE id IN(10,11)

答案 1 :(得分:0)

您尝试这个

$this->db->set('c1', 'c1+101', FALSE)

$this->db->set('c1', '`c1+101`', FALSE)