我有3張桌子,其中2張是臨時桌子。一個有舊的價值要更新,另一個有新的價值。如何從其他2個包含舊值和SQL Server中的新值的表中更新表?
第一表包含的列Telephone
和ID
,而另外兩個只包含一個列,telephones
例
表TelephonesOrganization
:
ID Telephone
1 1234
1 4567
1 5678
表TelephonesToUpdate
:
Telephone
1234
4567
表TelephonesNewValues
:
9999
9999
的值,以更新TelephonesToUpdate
直接對應於TelephonesNewValues
同一行,例如1234將採取值9999時,也ID是可變在這種情況下它的1
我試過使用和UPDATE
和在哪裏比較Telephones
和id,但由於某種原因,我得到重複的條目。
Declare @ID int
Set @ID = 1
UPDATE A
SET A.Telephone = 12345 FROM TelephoneOrg A, @TempOLDTelephones B , @TempNEWTelephones C
WHERE A.Telephone = B.Telephone and A.ID = @ID
預先感謝任何回答,
但丁。
您的數據模型似乎存在正確的候選鍵被定義/存在的問題。這會使您的應用程序(即您的更新聲明)的工作更模糊,效率更低並且可能會造成災難性後果。但是,也許你已經覆蓋,只是沒有顯示它。例如,您想要更新TelephonesOrganization表 - 但該表的關鍵是什麼?在不知道的情況下,很難回答這個問題。 –
你應該有**顯式ID的某種**來連接你的兩個表'TelephonesToUpdate'和'TelephonesNewValues' - **不要**僅僅依靠「排序」,因爲關係表**不具有**任何*隱式*排序 - 你必須有一些東西用來鏈接兩個單獨的表中的兩行! –
電話組織的主要關鍵是ID +電話,因爲組織不能有2部電話,因爲我知道他們將始終按順序排列。由於表格是函數的返回值,但是你指的是什麼,它們沒有任何隱式順序? –