Oracle-更新字段-一張表的字段更新另一張的表的字段


 

設備表ops_device_info中的終端號terminal_id值是以 'D'開頭的字符串,而終端表ops__terminal_info中的終端號terminal_id是8位字符串, 它們之間是通過device_id關聯的.

ops_device_info 1-->n   ops_terminal_info

現在希望將設備表中的終端號更改為終端表中的終端號.

 

終端狀態 4代表移機 5代表調試  6代表暫停  7代表啟用  8代表報廢  9代表停用

 

 

方式一:

update  ops_device_info d set d.terminal_id = (select t.terminal_id from ops_terminal_info t  where t.device_id=d.device_id and d.terminal_id like 'D%' and t.terminal_state not in ('8','9'))  
where exists  
(select t.terminal_id from ops_terminal_info t  where t.device_id=d.device_id and d.terminal_id like 'D%' and t.terminal_state not in ('8','9')); 

方式二:

merge into OPS_DEVICE_INFO t1
using OPS_TERMINAL_INFO t2
on (t1.device_id = t2.DEVICE_ID and t2.TERMINAL_STATE not in ('8','9'))
when matched then
  Update
     set t1.TERMINAL_ID = t2.TERMINAL_ID
   where t1.terminal_id like 'D%';

 

SQl執行過程中如果出現 '單行子查詢返回多行記錄',那可能是你的數據本身有點重復。; 可以使用 我的另一個sql查詢一下重復數據 http://www.cnblogs.com/yangw/p/4088086.html .

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM