再謝Fishman ,再請教Update問題 |
答題得分者是:Fishman
|
zhczm
一般會員 發表:66 回覆:15 積分:16 註冊:2003-06-23 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 我用的是 Oracle 語法,不知 SQL Server 是否也可以
< class="code">
UPDATE B
SET QTY = (SELECT QTY FROM A WHERE A.NO = B.NO)
WHERE EXISTS (SELECT QTY FROM A WHERE A.NO = B.NO)
--------------------------------
小弟才疏學淺,若有謬誤請不吝指教
--------------------------------
------
Fishman |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
zhczm
一般會員 發表:66 回覆:15 積分:16 註冊:2003-06-23 發送簡訊給我 |
UPDATE mcycl
SET kc = (SELECT rks
FROM mcrkmx
WHERE mcrkmx.yclbh = mcycl.yclbh AND mcrkmx.rklb = 3 AND cgdh = '正單')
WHERE EXISTS (SELECT rks
FROM mcrkmx
WHERE mcrkmx.yclbh = mcycl.yclbh AND mcrkmx.rklb = 3 AND cgdh = '正單') 謝謝你,在你的熱心幫助下,我的目的達到了!
又有以下2個問題:
1.如果mcrkmx庫中,針對yclbh,rklb,cgdh三個段位有重復記錄時,則無法執行Update,我的問題是如何用Delete 刪除mcrkmx庫中針對以上三個段位的重復記錄。
2.如何把mcrkmx庫中有的記錄,而mcycl庫中沒有的記錄用Insert into一次追加到mcycl庫中.
謝謝!! 發表人 - zhczm 於 2004/02/06 15:18:17
|
terrychen
尊榮會員 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: zhczm, 1.如果盤點結果(mcrkmx)有重複資料,且數量(rks)不一致,刪除準則為何?
之所以無法 update 原因是出在以下紅色部分的語法中會篩選出超過兩筆資料
引言:你可以更改為UPDATE MCYCL SET KC = (SELECT RKS FROM MCRKMX WHERE MCRKMX.YCLBH = MCYCL.YCLBH AND MCRKMX.RKLB = 3 AND CGDH = '正單') WHERE EXISTS (SELECT RKS FROM MCRKMX WHERE MCRKMX.YCLBH = MCYCL.YCLBH AND MCRKMX.RKLB = 3 AND CGDH = '正單') SELECT SUM(RKS) -- OR AVG(RKS),MAX(RKS),MIN(RKS) FROM MCRKMX WHERE MCRKMX.YCLBH = MCYCL.YCLBH AND MCRKMX.RKLB = 3 AND CGDH = '正單')確保只有一筆資料,理論上,YCLBH 、RKLB 、CGDH 應該組合唯一個 Unique Key 2.大致如下,請自行加以修正,請注意重複值問題 INSERT INTO MCYCL (YCLBH, RKLB, CGDH, KC) SELECT YCLBH, RKLB, CGDH, RKS FROM MCRKMX WHERE NOT EXISTS (SELECT 'NOT EXISTS IN MCYCL' FROM MCYCL WHERE MCRKMX.YCLBH = MCYCL.YCLBH AND MCRKMX.RKLB = 3 AND MCRKMX.CGDH = MCYCL.CGDH AND MCYCL.CGDH = '正單')-------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman |
zhczm
一般會員 發表:66 回覆:15 積分:16 註冊:2003-06-23 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 如過要刪除並保留一筆,你可必須先將重複資料寫入一暫存 Table,再刪除正式 Table 後再將重複資料回寫,當然必須控制指回寫一筆
select yclbh, rklb, cgdh, count(*) from mcrkmx group by yclbh, rklb, cgdh having count(*) >= 2-------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |