我有以下SQL語句,只需在我們的Sybase 15數據庫中使用最新的軟件包版本號更新#temp
臨時表。使用子查詢派生表錯誤進行更新
UPDATE t
SET versionId = l.latestVersion
FROM #temp t INNER JOIN (SELECT gp.packageId
, MAX(gp.versionId) latestVersion
FROM Group_Packages gp
WHERE gp.groupId IN (SELECT groupId
FROM User_Group
WHERE userXpId = 'someUser')
GROUP BY gp.packageId) l
ON t.packageId = l.packageId
給我(主要是甲骨文& SQL Server體驗超過的Sybase)有錯小本聲明。然而,Sybase拋出一個異常:
You cannot use a derived table in the FROM clause of an UPDATE or DELETE statement.
現在,我不明白這裏的問題。我認爲這是因爲使用了聚合/ GROUP BY。當然,我可以把子查詢放在一個臨時表中並加入它,但我真的想知道'正確'的方法應該是什麼以及到底是什麼錯誤。
任何想法或指導將不勝感激。
這似乎是一個。謝謝。只需要做一些小小的調整:'更新t'到'UPDATE#temp'。令人沮喪的是,這樣簡單的事情必須以這種方式寫出來! – markblandford 2012-08-09 13:58:45
我認爲@valexhome提出了一個較短的版本。 – 2012-08-09 14:00:22