1樓:為你莫哀3秒
先建立一個結構一模一樣的表emp1,併為其插入部分資料
create table emp1
asselect * from emp where deptno = 20;
update掉emp1中的部分資料
update emp1
set sal = sal 100,
comm = nvl(comm,0) 50
然後我們試著使用emp1中資料來更新emp中sal 和 comm這兩列資料。
我們可以這麼寫
update emp
set(sal,comm) = (select sal,comm. from emp1 where emp.empno = emp1.empno)
where exists (select 1 from emp1 where emp1.empno = emp.empno)
請你尤其注意這裡的where子句,你可以嘗試不寫where子句來執行以下這句話,你將會使得emp中的很多值變成空。
這是因為在oracle的update語句中如果不寫where子句,oracle將會預設的把所有的值全部更新,即使你這裡使用了子查詢並且某在值並不能在子查詢裡找到,你就會想當然的以為,oracle或許將會跳過這些值吧,你錯了,oracle將會把該行的值更新為空。
我們還還可以這麼寫:
update (select a.sal asal,b.sal bsal,a.comm acomm,
b.comm bcomm from emp a,emp1 b where a.empno = b.empno)
set asal = bsal,
acomm = bcomm;
這裡的表是一個類檢視。當然你執行時可能會遇到如下錯誤:
error 位於第 2 行:
ora-01779: 無法修改與非鍵值儲存表對應的列
這是因為新建的表emp1還沒有主鍵的緣故
下面增加一個主鍵
alter table emp1
add constraint pk_emp1 primary key (empno);
執行之後
在執行前面的語句就能成功。
這裡我們總結一下:
在oracle中不存在update from結構,所以遇到需要從另外一個表來更新本表的值的問題的時候,有兩種解決的辦法:
一種是使用子查詢,使用子查詢時一定要注意where條件(一般後面接exists子句),除非兩個表是一一對應的,否則where條件必不可少,遺漏掉where條件時可能會導致插入大量空值。
另外一種是類檢視的更新方法,這也是oracle所獨有的。先把對應的資料全部抽取出來,然後更新表一樣更新資料,這裡需要注意的是,必須保證表的資料唯一型。
2樓:匿名使用者
1、update a,b set a.name=b.name,a.
result=b.result,a.remark=b.
remark where a.id=b.id;
2、create or replace procedure test() as
begin
update a,b set a.name=b.name,a.
result=b.result,a.remark=b.
remark where a.id=b.id;
end test;
/3、shell script
id.txt包含id列表,每行一個id
#!/bin/sh
for id in `cat id.txt`;do
echo -e "update a set a.name=(select z.name from b z where z.
id=$),a.result=(select x.result from b x where x.
id='$'),a.remark=(select y.remark from b y where y.
id='$') where a.id='$';"
done | sqlplus -s 'user/pw'
永恆之塔更新問題,永恆之塔更新問題
一般方法 請安裝十全補丁。特殊方法 到永恆之塔的安裝目錄aion bin32裡面的aion.bin檔案複製 然後改名字aion.com 然後在桌面新建一個文字文件 f cd cd plaync 永恆之塔 aion call bin32 aion.com 文件改成aion.bat 上面的目錄改成自己安...
CF更新問題
似乎不能,但是可以把整個資料夾覆蓋就行了。可以試試這個方法 每次更新時都要顯示檔名,把這些記下來,然後覆蓋到原來的裡面就行。你只要不是把cf的原始檔放在c盤 就算還原了也可以用 cf不是屬於系統安裝檔案,也就是說就算你重新做系統,也不會影響他的正常執行。你在 開始 的選單欄點 搜尋 輸入 cross...
關於Windows更新問題
執行裡面的installer.bat 重起電腦就ok了。方法二 在登錄檔中也搜不到相關wgatray.exe的項,但在仔細地搜尋了登錄檔後,還是找到了這個的可惡東西。hkey local machine software microsoft windows nt currentversion win...