假設表a中有多個字段(province ,city)需要從b表獲取(兩張表的mobile一樣),總結了幾種寫法。
一、update a set a.province=(select province from b where b.mobile=a.mobile);
update a set a.city=(select cityfrom b where b.mobile=a.mobile);
這種寫法效率太低,尤其是號碼有上萬條的時候,所以拋棄。
二、update a set a.province=b.province,a.city=b.city from a inner join b on a.mobile=b.mobile.
或者update a set a.province=b.province,a.city=b.city from a,b where a.mobile=b.mobile.
三、update a inner join b on a.mobile=b.mobile set a.province=b.province,a.city=b.city
注意:第二種和第三種寫法在oracle行不通的,老是報錯,折騰了好長時間,最後還是用下面的語句解決了問題
四、update a set(a.province,a.city)=(select province,city from b where b.mobile=a.mobile)
其實第四種方法是第一種方法的合併。
專案中寫的真實例子:
update m_smsphoneno a set (a.operator,a.province,a.city)=(select owner,state,city from keyaccount.cellphonesort b where substr(a.mobile,1,7)=b.startcode) where a.category=2 and a.city is null; 注:用a.city=null不行的
select*
fromct_con_truckfeemdyentryasoftimestampto_timestamp('2014-12-25 12:00:00', 'yyyy-mm-dd hh24:mi:ss')
wherecfcontractid='vjaaaacgqkh8twni';
insertintoct_con_truckfeemdyentry (select*fromct_con_truckfeemdyentry
asoftimestampto_timestamp('2014-12-25 12:00:00','yyyy-mm-dd hh24:mi:ss')wherecfcontractid='vjaaaacgqkh8twni' );
select * from t_zbd_person
delete from t_zbd_person
insert into t_zbd_person
(fid,
fnumber,
fname_l1,
fname_l2,
fname_l3,
fcontrolunitid,
fcreatorid,
fcreatetime,
flastupdateuserid,
flastupdatetime,
fusedstatus,
fidentitycard,
feaspersonid,
fadminorgunitid,
fadnumber)
select newbosid('73a28d5d'),
d.fnumber,
d.fname_l1,
d.fname_l2,
d.fname_l3,
d.fcontrolunitid,
d.fcreatorid,
d.fcreatetime,
d.flastupdateuserid,
d.flastupdatetime,
1,d.fidcardno,
d.fid,
b.fid ,
u.fadnumber
from t_org_position a
inner join t_org_baseunit b
on b.fid = a.fadminorgunitid
inner join t_org_positionmember c
on c.fpositionid = a.fid
inner join t_bd_person d
on d.fid = c.fpersonid
left join t_pm_user u
on u.fpersonid = d.fid
where d.femployeetypeid <> 'ftcmjt3ssri1twufiarb56kehbm='
and b.flongnumber like 'z000001!z000005!z000041%'
and d.fdeletedstatus = 1
oracle中一張表的某個欄位與另一張表關聯
今天在無意間查詢到乙個sql,有兩張表,一張使用者表,使用者表中有個personroles欄位,clob型別,裡面是逗號分隔的角色id a,b,c,d 需要查詢每個人和其現有的角色。問題在於使用者表和角色表的關聯,直接left join用roles.id in user.personroles 查詢...
Oracle將一張表幾個字段賦值到另一張表指定字段
由於某種原因客戶資料庫中 trp advp表部分記錄的projectname和groupname兩個字段值丟失,由於trp reportitem 表中可以找到對應的資料,於是通過該錶進行資料還原.trp advp中一條記錄對應trp reportitem中的多條記錄,因此需要對trp reporti...
如何匯出一張表裡的同字段的多個字段值 遞迴
如何匯出一張表裡的同字段的多個欄位的值呢?我在這裡用到的是遞迴的方法,那麼問題又來了,什麼是遞迴呢?顧名思義,遞迴從字面的理解就是一層一層地傳遞下去,其實也是這樣的,遞迴的定義就是 在函式的定義中使用函式自身的方法。看著這個定義確實難以理解,不過可以理解為迴圈的漸進,在使用遞迴的時候,需要注意的是要...