视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle批量update
2020-11-09 11:44:38 责编:小采
文档


Oracle批量update,这种写法,会更新t1表中的所有行:如果t1.a=t2.a的,就更新t2中查出的记录进t1;如果t1.alt;gt;t2.a的,t1中

需求:

将t2(t_statbuf)表中id和t1(T_Mt)表相同的记录更新进t1表。

1.错误的写法:

[sql]

  • 这种写法,会更新t1表中的所有行:如果t1.a=t2.a的,就更新t2中查出的记录进t1;如果t1.a<>t2.a的,t1中的记录会被更新成空(null)。

    正确的写法:

    [sql]

  • 解析:

    正确的写法,就是在后面加了一句 where exists(select 1 from table_name_2 t2 where t1.a=t2.a);

    这句话的意思是:如果存在t1.a=t2.a,就更新,否则,不更新,所以不会导致t1表中所有的记录都被更新。

    例:

    update table_name_1 set (a,b) = (select 1,2 from dual where 1=2);

    这个结果会把table_name_1中的记录全部更新成空(null),因为后面1=2不成立。

    总结:

    update时,要弄清限定条件,要测试!

    我的测试语句:

    [sql]

    我的业务语句:

    [sql]

    下载本文
    显示全文
    专题