全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1246
推到 Plurk!
推到 Facebook!

用Sql語句更新table資料

答題得分者是:Fishman
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-01 13:05:02 IP:219.130.xxx.xxx 未訂閱
請教大家一個問題: 有兩個資料表: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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-01 13:19:31 IP:211.22.xxx.xxx 未訂閱
可以這樣 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-01 13:19:41 IP:61.70.xxx.xxx 未訂閱
您好: 以下方式試試 UPDATE a1 SET a = (SELECT a FROM a2 WHERE a2.id = a1.id)
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-01 14:04:05 IP:202.62.xxx.xxx 未訂閱
您好﹗    Update Table1 a, Table2 b Set a.A01=b.A01, a.A02=b.A02, a.A03=b.A03 Where a.ID=b.ID    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-01 14:09:38 IP:219.130.xxx.xxx 未訂閱
引言: 可以這樣 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-01 14:19:46 IP:61.70.xxx.xxx 未訂閱
您好: 請再試一下,多了檢查是否存在. UPDATE a1 SET a = (SELECT a FROM a2 WHERE a2.id = a1.id) WHERE EXISTS (SELECT id FROM A2 WHERE A1.id = a2.id)
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-01 14:28:07 IP:219.130.xxx.xxx 未訂閱
引言: 您好﹗ Update Table1 a, Table2 b Set a.A01=b.A01, a.A02=b.A02, a.A03=b.A03 Where a.ID=b.ID ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
cashxin2002大大您好! 運行出現提示錯誤:Token:,Table2
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-01 15:09:57 IP:59.36.xxx.xxx 未訂閱
引言: 您好: 請再試一下,多了檢查是否存在. 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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-01 17:15:24 IP:202.62.xxx.xxx 未訂閱
您好﹗    小弟測試沒有問題﹐檢查看看是否是資料表名稱寫錯了﹒或者不要使用資料表別名﹐直接使用資料表名稱﹐如下﹕ 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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-01 17:23:05 IP:61.70.xxx.xxx 未訂閱
您好: 使用別名的方式 UPDATE a1 SET num = (SELECT num FROM a2 b WHERE b.id = c.id) FROM a1 c WHERE EXISTS (SELECT id FROM A2 b WHERE b.id = c.id)
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-01 18:32:30 IP:219.132.xxx.xxx 未訂閱
真是麻煩您們了!    TO:cashxin2002大大 不用別名,還是一樣不行也(Token:,Table2),會不會與資料庫類型有關呢?因為我用的是paradox7資料庫.    TO:supman大大 運行提示:Token:from  
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-06-01 18:45:16 IP:202.62.xxx.xxx 未訂閱
您好﹗    有這樣的可能﹐明天建個Paradox資料庫再試試﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-06-02 10:04:15 IP:61.70.xxx.xxx 未訂閱
您好: 我是用MS SQL2000去測試的,不曉得是不是Paradox不支援,你下這樣看看會不會過: Select Field From Tabel tbl
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-06-02 10:30:07 IP:219.132.xxx.xxx 未訂閱
引言: 您好: 我是用MS SQL2000去測試的,不曉得是不是Paradox不支援,你下這樣看看會不會過: Select Field From Tabel tbl supman大大,您好!測試可以通過.請問接下來該怎麼做啊 < face="Verdana, Arial, Helvetica"> cashxin2002兄,您好!麻煩您了哦!有機會我也要在MS SQL2000測看看
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-06-02 11:34:04 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-06-02 14:21:13 IP:219.132.xxx.xxx 未訂閱
Fishman大大您好:兩種方法都測試通過.謝謝!    在此非常感謝各位大大的解答.謝謝您們! K.TOP有您們真好!    
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-06-02 14:29:19 IP:61.70.xxx.xxx 未訂閱
FishMan大大提供的方法小弟最早的時候有測試過,不過似乎MS SQL不支援這樣的方式,剛剛去測試了,也無法通過,所以小弟才改成後來From A1 a的做法,結果反而這樣在Paradox無法通過@@"
系統時間:2024-07-02 0:26:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!