更新查询,而where子句仍然为每行更新不同的值

时间:2014-05-29 07:20:57

标签: sql oracle

上下文     更新查询,而where子句仍然为每行更新不同的值。         以下更新查询的工作原理如何?

    create table te--table creation
    (
    col1 varchar2(100),
    col2 varchar2(200))
    create table te1
    (
    col1 varchar2(100),
    col2 varchar2(200))

    insert into te (COL1, COL2) values ('1', 'ABC');
    insert into te (COL1, COL2) values ('2', 'XYZ');
    insert into te (COL1, COL2) values ('3', 'LMN');
    insert into te (COL1, COL2) values ('4', 'PQR');
    insert into te (COL1, COL2) values ('5', 'TTT');

    insert into te (COL1, COL2) values ('1', '');
    insert into te (COL1, COL2) values ('2', '');
    insert into te (COL1, COL2) values ('3', '');
    insert into te (COL1, COL2) values ('4', '');
    insert into te (COL1, COL2) values ('5', '');


    update te q
       set (q.col2) = (select tt.col2 from te1 tt where tt.col1 = q.col1);

1 个答案:

答案 0 :(得分:0)

update te q
       set (q.col2) = (select tt.col2 from te1 tt 
                       where tt.col1 = q.col1 
                         and tt.col2 is not null 
                         and LENGTH(tt.col2)>0);

更新:您的选择对于相同的col1值(空且非空col2)具有不同的结果