KingbaseES 实现 MYSQL 的 delete limit 写法

使用MySQL的用户可能会比较熟悉这样的用法,更新或删除时可以指定限制更新或删除多少条记录。

update tl set xxx=xxx where xxx limit 10;

delete from tl where xxx limit 10;

目前KingbaseES没有类似的语法,但是可以通过子查询来达到同样的效果。

创建测试表

test=# create table t1(id number, uid number);
CREATE TABLE
test=# insert into t1 SELECT generate_series(1,20000),(random()*(10^7))::integer;
INSERT 0 20000

update | delete limit 子查询写法

test=# DELETE FROM t1 WHERE id in(SELECT id FROM t1 ORDER BY id limit 10);
DELETE 10

test=# update t1 set uid=999 where id in (select id from t1 where id between 50 and 200 limit 30);
UPDATE 30
test=# select * from t1 where id between 50 and 200;
 id  |   uid   
-----+---------
  61 |     999
  62 |     999
  63 |     999
  64 |     999
  65 |     999
  66 |     999
  67 |     999
  68 |     999
  69 |     999
  70 |     999
  71 |     999
  72 |     999
  73 |     999
  74 |     999
  75 |     999
  76 |     999
  77 |     999
  78 |     999
  79 |     999
  80 |     999
  81 |     999
  82 |     999
  83 |     999
  84 |     999
  85 |     999
  86 |     999
  87 |     999
  88 |     999
  89 |     999
  90 |     999
  91 | 4791280
  92 | 8658152
  93 | 4275799
  94 | 1188468
  95 | 4405454
  96 | 6355264
  97 | 3400361
  98 | 7912872
  99 | 4159834
 100 | 8621857
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值