台灣最大程式設計社群網站
線上人數
1169
 
會員總數:239370
討論主題:185707
歡迎您免費加入會員
討論區列表 >> MS SQL >> 不同資料庫比對
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
不同資料庫比對
價值 : 50 QP  點閱數:285 回應數:9

樓主

tiger
門外漢
0 1
14 2
發送站內信

不同資料庫比對
兩個不同資料庫(0000,0001)都有產品TABLE,TABLE裡有產編(CODE),名稱(CNAME),數量(QTY),成本(COST)
(下面語法可)
1.select CODE,CNAME FROM [0001].[dbo].[PRODUCT]
WHERE CODE NOT IN (SELECT CODE FROM [0000].[dbo].[PRODUCT])
(下面語法不可)
2.select CODE,CNAME FROM [0001].[dbo].[PRODUCT]
WHERE [0001].[dbo].[PRODUCT].[CODE]=[0000].[dbo].[PRODUCT].[CODE]
AND [0001].[dbo].[PRODUCT].[QTY]=[0000].[dbo].[PRODUCT].[QTY]
會出現SQL語法錯誤
如果一定要用第二種方式要如何寫因為







搜尋相關Tags的文章: [ 不同資料庫比對 ] ,
本篇文章發表於2017-03-24 08:17
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
你第二種 的 [0000].[dbo].[PRODUCT] 這個table 到哪去了
本篇文章回覆於2017-03-24 08:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

pilipala
檢舉此回應

使用 MERGE 插入、更新,和刪除資料
https://technet.microsoft.com/zh-tw/library/bb522522(v=sql.105).aspx
本篇文章回覆於2017-03-24 11:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

QOO
捐贈 VP 給 QOO 檢舉此回應
WHERE條件中有2個table,但你的from中只放了一個table

所以在from中,寫上另一個table就可以了


本篇文章回覆於2017-03-24 14:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

tiger
檢舉此回應
會出現
General SQL error
FROM子句中的物件"0000.dbo.PRODUCT"和"0001.dbo.PRODUCT"具有相同的公開名稱.請使用相互關聯名稱加以區別
本篇文章回覆於2017-03-25 23:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

QOO
捐贈 VP 給 QOO 檢舉此回應
可能是兩個表的欄位名稱相同導致的,在資料表後加上別名試試


本篇文章回覆於2017-03-27 10:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

tiger
檢舉此回應
[0001].[dbo].[PRODUCT] a,[0000].[dbo].[PRODUCT] b 是甚麼意思
本篇文章回覆於2017-04-04 19:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

pilipala
檢舉此回應
建議改用 JOIN 的語法

本篇文章回覆於2017-04-05 09:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

QOO
捐贈 VP 給 QOO 檢舉此回應
To #6

把原本的TABLE名稱,用a,b去取代

在from宣告後,select及where條件中,就不用打很長的table名稱了
本篇文章回覆於2017-04-05 13:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

緋喵
檢舉此回應
您要使用第二種查詢方法的話 是否要加上資料庫名稱在你的欄位上?
因為你同時都有產品TABLE,TABLE裡有產編(CODE),名稱(CNAME),數量(QTY),成本(COST)

select CODE,CNAME FROM [0001].[dbo].[PRODUCT]
WHERE [0001].[dbo].[PRODUCT].[CODE]=[0000].[dbo].[PRODUCT].[CODE]
AND [0001].[dbo].[PRODUCT].[QTY]=[0000].[dbo].[PRODUCT].[QTY]

其中CODE,CNAME並沒有指明是哪個資料庫的,所以出錯是很正常的@_@~

另外會建議您使用下列方式

select A.CODE,A.CNAME FROM [0001].[dbo].[PRODUCT] A inner join [0000].[dbo].[PRODUCT] B on A.[CODE]=B.[CODE] AND A.[QTY]=B.[QTY]
本篇文章回覆於2017-04-27 11:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.