update与limit 关键字使用

有时候有需要批量更新数据表中从多少行到多少行的某个字段的值

mysql的update语句只支持更新前多少行,不支持从某行到另一行,比如 
UPDATE tb_name SET column_name='test' ORDER BY id ASC LIMIT 30; 
更新前30行的某个字段内容,没什么问题。

UPDATE tb_name SET column_name='test' ORDER BY id ASC LIMIT 20,10; 
更新从20行到30行的某个字段的内容,这样会报错。

解决办法就是采用子查询的方式 
UPDATE tb_name SET column_name='test' WHERE id in (SELECT id FROM (SELECT * FROM tb_name ORDER BY id ASC LIMIT 20,10) AS tt); 

这样就能实现更新表中根据id升序排序的第20条到第30条数据的某个字段的内容

注意:如果这样的话也是不行的

UPDATE tb_name SET column_name='test' WHERE id in (SELECT id FROM tb_name ORDER BY id ASC LIMIT 20,10); 

会报错 在一个语句中 是不能将一个语句查询出来的值 但是嵌套两个子查询可以

原因:https://blog.csdn.net/qq_15071263/article/details/79001487

UPDATE bds_data_product_history SET `version`=poid WHERE oid =(SELECT tt.oid FROM (SELECT * FROM bds_data_product_history p LIMIT 0,1) tt);

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值