SQL對於所有事情來說都很新穎,因此希望您能忍受我。幫助創建UPDATE語句請
我有一個情況,我有一個臨時表中有大約11列和100行的數據。目的地表格包含大約27列和100行。
我正在嘗試使用T-SQL腳本創建一個服務器代理作業,以從暫存表中更新目標表,但僅限於需要的列。
Staging Table
Col1 - Col11
Destination Table
Col1 - Col27
我需要保留目標表中的「剩餘」列,因爲它們保存的數據不是由臨時表提供的。
我還應該指出,臨時表中的記錄數量將會隨着時間的推移而不斷增長,並且代理作業的計劃將每小時查找臨時表以進行更新。
這是我目前的腳本,它可以成功完成,但目標表中的每一行都由登臺表的第一行中的數據填充。
例如分期表Col1 = David和Col2 = Smith。
一旦執行下面的查詢,目標表中的所有行包含每個記錄的列1和2中的David和Smith。
UPDATE DestTable
SET DestTable.Col1 = StagingTable.Col1,
DestTable.Col2 = StagingTable.Col2,
FROM StagingTable
我已經使用WHERE
聲明匹配ID的數據,但對於任何新的記錄在臨時表等待時,ID將不會由目標表「已知」考慮。
最後,臨時表將爲目標表提供新記錄,更新現有記錄以及還有要刪除的記錄。
在此先感謝,併爲'散文'道歉。
你應該做的第一件事是你比較了該列決定。提供一些縮小的示例和目標表以及您正在查找的結果。 –
稍微偏離主題 - >如果您的臨時表包含希望添加到目標表中的新行,那麼您有幾個選擇。您可以執行serperate [UPDATE](https://msdn.microsoft.com/en-us/library/ms177523.aspx)和[INSERT](https://msdn.microsoft.com/en-us/library/ms174335 .aspx)語句。或者你可以看看[MERGE](https://msdn.microsoft.com/en-GB/library/bb510625.aspx)查詢,這些可能有點讓人望而生畏,但它們確實允許你將更新和插入一個聲明。 –
謝謝,我會再考慮MERGE選項。 – speshfesh