oracle 用一個表欄位更新另一個表欄位三種方法____oracle

來源:互聯網
上載者:User

1. update (select .....) set column1 = column2;

update (select iy.company_name company_name1, cc.company_name_jc company_name2
        from income_year_item iy , city_company cc
       where iy.company_code = cc.code
       )
   set company_name1 = company_name2;

 

2.只能單行子查詢s

update  CITY_PROJECT_SCALE_INFO c  set
(c.value) = (
       select d.value from CITY_PROJECT_SCALE_INFO @test d where d.project_id = '7d7fd580a06240b2a9137dc2bbe831e9'
          and d.project_id = c.project_id and c.company_code = d.company_code
)
 where exists (
  select 1 from  CITY_PROJECT_SCALE_INFO @test d where d.project_id = '7d7fd580a06240b2a9137dc2bbe831e9'
          and d.project_id = c.project_id and c.company_code = d.company_code
)

 

請你尤其注意這裡的where子句,你可以嘗試不寫where子句來執行以下這句話,你將會使得CITY_PROJECT_SCALE_INFO中的很多值變成空。

這是因為在oracle的update語句中如果不寫where子句,oracle將會預設的把所有的值全部更新,即使你這裡使用了子查詢並且某在值並不能在子查詢裡找到,你就會想當然的以為,oracle或許將會跳過這些值吧,你錯了,oracle將會把該行的值更新為空白。

 

3.使用merg inot 語句

--更新生產基礎欄位
merge into city_cfg_data_column_common cf1 using
      city_cfg_data_column_common2 cf2 on
      (cf1.resourceid = cf2.resourceid)
   when matched then
        update set   cf1.template_type = cf2.template_type,
                     cf1.chinese_name = cf2.chinese_name,
                     cf1.column_name = cf2.column_name,
                     cf1.column_type = cf2.column_type,
                     cf1.column_size = cf2.column_size
  when not matched then
       insert (cf1.resourceid,cf1.template_type,cf1.chinese_name,cf1.column_name,cf1.column_type,cf1.column_size
              ,cf1.is_can_edit,cf1.is_unique,cf1.is_can_cover,cf1.show_order)
       values (cf2.resourceid,cf2.template_type,cf2.chinese_name,cf2.column_name,cf2.column_type,cf2.column_size
              ,cf2.is_can_edit,cf2.is_unique,cf2.is_can_cover,cf2.show_order)
              

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.