다음 SQL 문을 사용하여 #temp
임시 테이블을 Sybase 15 데이터베이스의 최신 패키지 버전 번호로 간단히 업데이트 할 수 있습니다. 나 (더베이스보다는 주로 오라클 & SQL 서버 환경)으로하위 쿼리 파생 테이블 오류로 업데이트
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
이 문을 조금 잘못이있다. 그러나 Sybase는 예외를 throw합니다.
You cannot use a derived table in the FROM clause of an UPDATE or DELETE statement.
이제는 문제가 발생하지 않습니다. 나는 집계/GROUP BY를 사용하고 있기 때문에 그것이라고 가정합니다. 물론 임시 테이블에 하위 쿼리를 넣고 조인 할 수는 있지만 '올바른'방법이 무엇인지, 무엇이 잘못되었는지를 알고 싶습니다.
모든 아이디어 나 지침을 주시면 감사하겠습니다.
그 중 하나 인 것 같습니다. 고맙습니다. 작은 수정을해야했습니다 :'UPDATE t'에서'UPDATE # temp'까지. 그렇게 간단한 것을 그런 식으로 써야한다는 것을 좌절시키는 것! – markblandford
@valexhome이 짧은 버전을 제안했다고 생각합니다. –