我想更新連接到另一個表的表中的一些行。左表按ID編索引;右表加入相同的ID,但每個ID有多行。我的查詢如下所示:基於連接多行的更新表SQL Server
UPDATE t1
SET t1.modified = t2.created
FROM table1 t1
INNER JOIN table2 t2
ON t1.ID = t2.ID
請注意,t1.modified和t2.created都是日期時間。 如前所述,t2每個ID有幾行,每個都有一個不同的創建值(所以主鍵是t2,創建)。我想要做的是設置t2.created = t1.modified的最大值。但是,在加入時,t1.modified值將不會按特定順序更新,因此無論哪一行最後更新,都是t1.modified獲取的值。我嘗試使用t1.modified = max(t2.created),但顯然我不能在更新查詢中使用聚合函數,也不能使用訂單子句(即排序行,以便最後一行更新將實際上是更新查詢中的最新值t2.created)。
任何幫助你可以提供我非常感謝!謝謝!!
我遇到了一個問題,它說修改的列不允許空值(所以更新失敗)。我猜這是因爲不是每個t1.ID都在t2?有什麼建議麼?我試圖追加不在...的地方,哪裏不存在 - 都沒有成功。 – user1422348
這個......編輯如上,我添加了issnull選項。 –
謝謝!像魅力一樣工作。 – user1422348