今天遇到用一個(gè)表的字段填充另一個(gè)表的問(wèn)題,整理了一下
1、在mysql中,應(yīng)該使用inner join,即:
UPDATE aINNER JOIN b
ON a.userName = b.userName
SET a.password = b.password
2、在sqlserver中,應(yīng)該使用update set from 即:
UPDATE aSET userName = b.userName
FROM a, b
WHERE a.userId = b.userId
3、在 oracle 中不存在 update from 結(jié)構(gòu), 所以遇到需要從另外一 個(gè)表來(lái)更新本表的值的問(wèn)題的時(shí)候,
有兩種解決的辦法 :
一種是使用子查詢: 使用子查詢時(shí)一定要注意where 條件 ( 一 般后面接 exists 子句 ) , 除非兩個(gè)表是一一對(duì)應(yīng)的,
否則 where 條件必不可少,遺漏掉 where 條件時(shí)可能會(huì)導(dǎo)致插入大量空 值。
另外一種是類(lèi)視圖的更新方法:這也是 oracle 所獨(dú)有的。先 把對(duì)應(yīng)的數(shù)據(jù)全部抽取出來(lái),然后更新表一樣更新數(shù)據(jù),
這 里需要注意的是,必須保證表的數(shù)據(jù)唯一型。
注意:
Oracle中是不支持update:From這樣的句子的,MySql和SqlServer是支持的但也有區(qū)別。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com