각 항목 코드 그룹에 대해 datedelta 필드를 업데이트하려고합니다. datedelta 필드는 특정 항목의 마지막 판매 이후 일수를 포함해야합니다.이전 행의 값과 그룹을 사용하여 UPDATE 쿼리
테이블 : : 업데이트 후 '판매'
id date datedelta itemcode
--------------------------------------------
1 2012-09-01 null 1
2 2012-09-08 null 1
3 2012-09-20 null 1
4 2012-03-01 null 2
5 2013-06-01 null 3
6 2013-06-06 null 3
, 나는 다음과 같이하기 위해 테이블을 싶습니다
id date datedelta itemcode
--------------------------------------------
1 2012-09-01 0 1
2 2012-09-08 7 1
3 2012-09-20 12 1
4 2012-03-01 0 2
5 2013-06-01 0 3
6 2013-06-06 5 3
예를 들어, 내 표는 같은이 업데이트 이전에 보인다 다음과 같은 측면에 문제가 있습니다.
a) 자체 가입을 수행하고 이전 날짜의 레코드를 참조하는 방법 및
b) 그룹화 부분을 처리하는 방법. 즉, 날짜 차이는 동일한 항목 코드에 대해서만 계산되어야합니다.
나는 성공없이 다음 쿼리를 시도 :
UPDATE sales AS s INNER JOIN sales AS prev ON prev.id IN (SELECT t.id FROM sales WHERE MAX(t.saledate) < r.saledate GROUP BY itemcode ORDER BY itemcode) SET datedelta = IFNULL(DATEDIFF(r.saledate, p.saledate), 0)
감사합니다. Alden. 필자는 mysql 커서에 익숙하지 않지만 필수적인 업데이트가 더욱 복잡 해지면 강력한 솔루션처럼 보입니다. – Jason