iT邦幫忙

0

SQL語法

sql

請教各位大大:
要把A資料庫中A1表的A13及A14欄位的資料,複製到B資料庫的B1表的B13,B14欄。
如何下SQL?
A1表欄位結構同B1,且KEY為A11,B11

這個問題問我這個偽手槍叔就對了
手槍叔建議不要亂更新INVMB,做錯了會讓您蹉塞的很爽
尤其還是MB057,這種更新法不是正確計算成本的流程
小心像其它個案上線後成本永遠是「參考值」

1 個回答

18
外獅佬
iT邦大師 1 級 ‧ 2009-08-27 20:31:23
最佳解答

對不起,沒看清楚題目,我重新寫過~~
UPDATE b.b1, a.a1 SET b.b1.b13=a.a1.a13,b.b1.b14=a.a1.a14 WHERE b.b1.b11=a.a1.a11

看更多先前的回應...收起先前的回應...

謝謝你的回答,不過,語法可能有問題,無法識別a.a1,b.b1
跨資料庫的語法可能不是這樣

外獅佬 iT邦大師 1 級 ‧ 2009-08-28 09:29:22 檢舉

這個,在mysql上是完全正常可以執行的。

外獅佬 iT邦大師 1 級 ‧ 2009-08-28 10:06:38 檢舉

Microsoft SQL Server的寫法:
UPDATE b.dbo.b1 SET b13=a.dbo.a1.a13,b14=a.dbo.a1.a14 FROM b.dbo.b1 inner join a.dbo.a1 ON a.dbo.a1.a11=b.dbo.b1.b11

再次謝謝,不過有一些問題
update Leader.dbo.INVMB SET
MB057=COST_TEST_A.dbo.INVMB.MB057
from Leader.dbo.INVMB INNER JOIN COST_TEST_A.dbo.INVMB
ON Leader.dbo.INVMB.MB001=COST_TEST_A.dbo.INVMB.MB001
where Leader.dbo.INVMB.MB001='4602100504500550'

錯誤訊息
FROM 子句中的物件 "COST_TEST_A.dbo.INVMB" 和 "Leader.dbo.INVMB" 具有相同的公開名稱。請使用相互關聯名稱加以區別。

外獅佬 iT邦大師 1 級 ‧ 2009-08-28 10:48:35 檢舉

因為你的資料表名稱相同,在沒有指定alias的時候,會造成別名相同的問題,要為個別資料表指定加上alias...

外獅佬 iT邦大師 1 級 ‧ 2009-08-28 10:54:51 檢舉

您的題目中,a1,b1的資料表名稱不同,所以,別名(alias)也不會相同。
改寫一下:

UPDATE L SET L.MB057=A.MB057 FROM Leader.dbo.INVMB L INNER JOIN COST_TEST_A.dbo.INVMB A ON L.MB001=A.MB001 WHERE L.MB001='4602100504500550'

試試看吧~~

讚啦!你是我見過回應速度最快又正確的大大,就是A咖啦!
交個朋友如何?

我要發表回答

立即登入回答