用Sql語句更新table資料 |
答題得分者是:Fishman
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
請教大家一個問題:
有兩個資料表:table1,table2,兩個資料表的結構一樣.只是資料不同.
現在想將table2與table1中所有ID相同的值更新到table1中去.請問在程式中如何下SQL語句?謝謝! 注:資料庫為Paradox7 table1的資料:
ID A01 A02 A03
--------------------
10 0.1 0.2 0.3
20 1.0 1.2 1.3
30 2.1 2.2 2.3
40 3.0 3.3 3.4
50 4.0 4.2 4.6
... table2的資料:
ID A01 A02 A03
-------------------
10 8.1 8.2 8.3
30 9.1 9.2 9.3
40 7.0 7.2 7.6
... table1更新後的數據應為:
10 8.1 8.2 8.3
20 1.0 1.2 1.3
30 9.1 9.2 9.3
40 7.0 7.2 7.6
50 4.0 4.2 4.6
...
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
可以這樣 UPDATE table1
SET A01 = table2.A01, A02 = table2.A02, A03 = table2.A03
FROM table2
WHERE table1.ID = table2.ID
and table1.A01 <> table2.A01
and table1.A02 <> table2.A02
and table1.A03 <> table2.A03 雪龍
http://bestlong.no-ip.com/
學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
引言: 可以這樣 UPDATE table1 SET A01 = table2.A01, A02 = table2.A02, A03 = table2.A03 FROM table2 WHERE table1.ID = table2.ID and table1.A01 <> table2.A01 and table1.A02 <> table2.A02 and table1.A03 <> table2.A03 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶謝謝bestlong大大,不過運行出現Sql語句錯誤:from <>> 謝謝,這種方法測試可以更新>> >> >> >> |
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
引言: 您好: 請再試一下,多了檢查是否存在. UPDATE a1 SET a = (SELECT a FROM a2 WHERE a2.id = a1.id) WHERE EXISTS (SELECT id FROM A2 WHERE A1.id = a2.id)supman大大,非常感謝您!更新資料沒問題了. 參考您提供的方法我是這樣寫:(請您看以下寫的會不會太麻煩了啊?想請問一下否簡潔一下呢?因為有想到如果table要是有10~20個欄位要更新就麻煩一點了.另外就是想請問table1,table2可否用a,b代替寫? 如上:cashxin2002大提供方式一樣(運行時出錯提示:Token:,Table2): Update Table1 a, Table2 b Set a.A01=b.A01, a.A02=b.A02, a.A03=b.A03 Where a.ID=b.ID with Query1 do begin SQL.Clear; SQL.Add('UPDATE table1 SET A01 = (SELECT A01 FROM table2 WHERE table2.ID = table1.ID ),') ; SQL.Add('A02 = (SELECT A02 FROM table2 WHERE table2.ID = table1.ID ),') ; SQL.Add('A03 = (SELECT A03 FROM table2 WHERE table2.ID = table1.ID )') ; SQL.Add('WHERE EXISTS (SELECT ID FROM table2 WHERE table1.ID = table2.ID )') ; ExecSQL; end; |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 小弟測試沒有問題﹐檢查看看是否是資料表名稱寫錯了﹒或者不要使用資料表別名﹐直接使用資料表名稱﹐如下﹕
Update Table1, Table2 Set Table1.A01=Table2.A01, Table1.A02=Table2.A02, Table1.A03=Table2.A03 Where Table1.ID=Table2.ID =================================
有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗
================================
------
忻晟 |
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Sorry !! 插一下花
不知道這樣行不行?
UPDATE A1 C SET NUM = (SELECT NUM FROM A2 B WHERE B.ID = C.ID) WHERE EXISTS (SELECT ID FROM A2 B WHERE B.ID = C.ID) 或是 UPDATE A1 C SET NUM = (SELECT NUM FROM A2 B WHERE B.ID = C.ID) WHERE C.ID IN (SELECT ID FROM A2)---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |