Yii2使用一条sql语句批量更新而非循环插入,如何实现?
Yii实现了如下的批量插入方式,如果是批量更新Yii2有没有相同的实现方式呢?
Yii::$app->db
->createCommand()
->batchInsert($table, $columns, $rows)
->execute();
批量更新是使用一条SQL语句实现批量更新,而非循环的更新的方式,e.g:
UPDATE order
SET field = CASE order_no
WHEN 1 THEN 'value'
WHEN 2 THEN 'value'
WHEN 3 THEN 'value'
END
WHERE order_no IN (1,2,3)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
replace into
(Update t_user set name='aa' where 1=1)a union ALL
(Update t_user set name='bb' where 1=2)a union ALL
(Update t_user set name='cc' where 1=3)a union ALL
合并sql语句, 用循环字符串,组成一条SQL语句,一次执行,提高sql的效率。循环的效率,就用不了多少了比起sql
在Yii上面我没有找到了类似的实现方式,但我还是改用临时表的方式来做批量更新
把需要批量更新数据先批量插入到一个临时表
然后采用拼接SQL的方式更新,SQL语句如下
Yii::$app->db
->createCommand()
->batchInsert($table, $columns, $rows)
->execute();
同意这个