我有以下 SQL 语句来简单地#temp
使用 Sybase 15 数据库中的最新包版本号更新临时表。
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
对我来说(主要是 Oracle 和 SQL Server 的经验比 Sybase 多)这句话几乎没有错。但是,Sybase 会引发异常:
You cannot use a derived table in the FROM clause of an UPDATE or DELETE statement.
现在,我不明白这里有什么问题。我认为这是因为使用了聚合 / GROUP BY。当然,我可以将子查询放在临时表中并加入它,但我真的很想知道“正确”的方法应该是什么以及到底是什么错误。
任何想法或指导将不胜感激。