중복 정렬을 사용하여 수천 개의 레코드가 있으므로 모든 레코드에 대해 올바른 정렬 순서를 설정하려고합니다.업데이트의 하위 쿼리에 아직 업데이트 된 레코드가 표시되지 않습니다.
먼저 나는 그들 모두를 설정 -1 그래서 SORTORDER는 0부터 시작 것, 그리고 내가이 쿼리를 실행합니다
UPDATE op.customeraddress SET sortorder = (SELECT MAX(ca.sortorder) + 1
FROM op.customeraddress AS ca
WHERE ca.customerid = customeraddress.customerid)
WHERE id IN (<subquery for IDs>)
문제는 하위 쿼리에서 MAX()는 항상를 반환하는 것이다 동일한 가치 - 이전 업데이트에 대해서는 알지 못합니다.
수동으로 레코드별로 레코드를 적용하면 쿼리가 제대로 작동합니다.
루핑에 의존하지 않고이를 수행하는 방법에 대한 아이디어가 있습니까?
당신은 순서를 사용할 수
9.1.2에서 실행 중이지만'using'에서 구문 오류가 발생합니다. 두 번째 쿼리는 몇 가지 열 이름 수정과 함께 작동하지만 1부터 계산되기 시작합니다 (하지만 쉽게 해결됩니다). 감사! –
@elbekko : 죄송합니다. USING은 완전히 잘못되었습니다. –