百万级别的数据更新语句

文章提供了两种更新table1中数据的方法。第一种使用UPDATE语句,结合子查询从table2选取特定行的数据。第二种采用MERGE语句,同样基于子查询,当匹配条件满足时更新table1的记录。两种方法都限制了只选取第一条数据(rownum<2)并针对202208月的数据进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种写法

	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)
表示当查询到多条数据时,取第一条数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值