현재 비트 맵 테이블을 업데이트 할 업데이트 문을 작성 중입니다. 다음을 수행합니다.DB2 업데이트의 하위 쿼리 반복
모든 ID에 대해 모든 행을 업데이트하고 RELATION_ID를 최신 행의 RELATION_ID로 설정합니다. 이 쿼리에서
도하고 (내가 먼저 업데이트하는 데 사용되는 값을 얻기 위해 그것을 사용하기 때문에)이 있는가 (나는 이미이 RELATION_ID이 행을 업데이트하지 않음) 반복 하위 쿼리가 ? 방법 (필수 프로그램없이, 순수 SQL) 첫 번째 쿼리의 값 또는 대안을 재사용
UPDATE TBL_CLIENT UPD
SET RELATION_ID = (
SELECT RELATION_ID FROM TBL_CLIENT SUBQ
WHERE UPD.ID = SUBQ.ID AND
UPDATE_TIMESTAMP = (
SELECT MAX(UPDATE_TIMESTAMP) FROM TBL_CLIENT SUBSQ
WHERE SUBSQ.ID = SUBQ.ID
)
)
WHERE ID IN (
SELECT ID
FROM TBL_CLIENT QU
GROUP BY ID
HAVING COUNT(DISTINCT(RELATION_ID)) > 1
) AND
RELATION_ID <> (
SELECT RELATION_ID FROM TBL_CLIENT SUBQ2
WHERE UPD.ID = SUBQ2.ID AND
UPDATE_TIMESTAMP = (
-- Update mit STID des neusten Eintrages
SELECT MAX(UPDATE_TIMESTAMP) FROM TBL_CLIENT SUBSQ2
WHERE SUBSQ2.ID = SUBQ2.ID
)
)
예 :
ID/RELATION_ID/UPDATE_TIMESTAMP
,515,- 10분의 1/2000년 1월 1일
- 12분의 1/2002년 1월 5일
- 15분의 1 업데이트 후에/2008년 3월 28일
:
- 15분의 1/1.1.2000
- 1/15/5.1.2002
- 1/15/28.3.2008
마지막 행에 따라서는 (!와 행 자체가 업데이트되지 않은 여기에 포함되지 않은 쿼리의 다른 부분에 대한 중요한) 관계 ID가 찍은
감사의, 가장 최근의 행이었다 모든 추천에 대해
조언은'update'를'merge'로 대체하는 것입니다. . . http://stackoverflow.com/questions/4184209/inner-join-in-update-sql-for-db2. –
테이블의 기본 키는 무엇입니까? –
기본 키는 ID, 시간 소인을 포함하여 다중 요소로 구성되지만 Relation_Id – Xavjer