ORACLE中的多表關聯更新

來源:互聯網
上載者:User
假設我們有test1 ,test2 兩表

create table test1(no number,name varchar2(10));

create table test2(no number,name varchar2(10));

insert into test1 values(1,'a');

insert into test1 values(2,'b');

insert into test1 values(3,'c');

insert into test2 values(1,'aa');

insert into test2 values(2,'bb');

至此:

test1

        NO NAME

---------- ----------

         1 a

         2 b

         3 c

test2

        NO NAME

---------- ----------

         1 aa

         2 bb

如果要將test1表與test2表NO欄位相等的記錄的name欄位更新為與test2表中的name字

段的值.

即以下效果:

test1

        NO NAME

---------- ----------

         1 aa

         2 bb

         3 c

那麼以下的語句

update test1 a set name=(select name from test2 b where a.no=b.no);

的效果為:

test1

        NO NAME

---------- ----------

         1 aa

         2 bb

         3

要出想要的效果,可以用下面的語句來實現.
update test1 a set name=(select name from test2 b where a.no=b.no) where

exists(select name from test2 b where a.no=b.no);

也可以用下面的語句來實現:
update (select a.name aname,b.name bname from test1 a,test2 b where

a.no=b.no) set aname=bname;

不過有個前提,是給test2表的NO設為主鍵.

alter table test2 add primary key(no);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.