我對SQL編碼相當陌生,並且仍在學習一些錯綜複雜的內容。 我已經研究並找不到與我所嘗試的相關的示例(也許我錯過了正確的關鍵字)。使用SQL Server 2016中涉及的第三個表更新查詢
我在SQL Server 2016三個表(僱員表 - E1,導入表與員工數據 - ED1和部門表 - D1)......對於這個問題相關的結構是:
在E1 DB1包含列
U_SysID - Identity,
UserID - VARCHAR,
FirstName - VARCHAR,
LastName - VARCHAR,
DepartmentID - VARCHAR
與DBO的模式DB2 ED1包含DB1列
UserID - VARCHAR,
FirstName - VARCHAR,
LastName - VARCHAR,
DepartmentName - VARCHAR
D1載列
DepartmentID - Identity and
DepartmentName - VARCHAR
代碼我想出了嘗試做到這一點是:
USE DB1
GO
UPDATE E1
SET DepartmentID = (SELECT DepartmentID
FROM D1
WHERE E1.UserID IN (SELECT UserID
FROM DB2.dbo.ED1)
AND D1.DepartmentName IN (SELECT DepartmentName
FROM ED1)
AND E1.UserID = DB2.dbo.ED1.UserID)
我的問題是最後一行。 「DB2.dbo.ED1.UserID」產生一個不可綁定消息的多部分標識符。沒有輸入錯誤,並且在上面的select語句中使用該數據庫引用沒有問題,但是如果我刪除最後一行,則會收到子查詢返回多個值的消息。
任何時間花在閱讀本文和提供建議,非常感謝。
如果我沒有正確地編寫這篇文章,我還要提前道歉。
您應該使用連接,而不是所有的子查詢。並且要小心,因爲如你所寫,你可能會得到超過1個返回的值。 –
謝謝你的評論。 –