百万级别的数据更新语句

第一种写法

	update table1 o
        set(column1,column2,column3,column4,column5)=(select '是',aa.column22,aa.column33,aa.column44,aa.column55 from
        (SELECT a.id, tt.column22, tt.column33,tt.column44, tt.column55 FROM table2 tt INNER JOIN table1 a on tt.id = a.id) 
    aa where aa.id=o.id AND o.DATE_MONTH='202208' and rownum<2)
    where exists(
        SELECT count(1)FROM table2 tt INNER JOIN table1 a on tt.id = a.id and a.DATE_MONTH='202208'
    );
    commit;

注:
(SELECT a.id, tt.column22, tt.column33,tt.column44, tt.column55 FROM table2 tt INNER JOIN table1 a on tt.id = a.id)
aa where aa.id=o.id AND o.DATE_MONTH=‘202208’ and rownum<2)
表示当查询到多条数据时,取第一条数据

第二种写法

-- 这是另一种更新语句
    merge into table1 o
    using (SELECT a.id,'是' as column1, tt.column2, tt.column3,tt.column4, tt.column5 FROM table2 tt 
    INNER JOIN table1 a on tt.id = a.id where rownum<2) aa
    on (o.id=aa.id AND o.DATE_MONTH='202208')
    when matched then update set o.column1=aa.column1 ,o.column2=aa.column2 ,o.column3=aa.column3
    ,o.column4=aa.column4,o.column5=aa.column5;

注:
(SELECT a.id,‘是’ as column1, tt.column2, tt.column3,tt.column4, tt.column5 FROM table2 tt
INNER JOIN table1 a on tt.id = a.id where rownum<2)
表示当查询到多条数据时,取第一条数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值