개
다음 작품 :
이
UPDATE names
JOIN (SELECT * FROM names ORDER BY placeRef, incidence DESC) AS p ON p.id = names.id,
(SELECT @curRank := 0, @nextRank := 0, @prevInc := 9999999999, @prevPlace := 0) AS v
SET
names.rank = IF( @prevPlace != p.placeRef, @curRank := 0, 0),
names.rank = IF( @prevPlace != p.placeRef, @nextRank := 0, 0),
names.rank = IF( @prevInc = p.incidence, @nextRank := @nextRank + 1, @curRank := @nextRank := @nextRank + 1),
names.rank = IF( @prevInc = p.incidence, @curRank := @curRank, @curRank := @nextRank),
names.incidence = @prevInc := names.incidence,
names.placeRef = @prevPlace := names.placeRef;
설명 :
UPDATE names
1 - 그래서,이 주문 결과에 대한 가상 테이블을 만드는 - 테이블을 설정은
JOIN (SELECT * FROM names ORDER BY placeRef, incidence DESC) AS p ON p.id = names.id,
2
를 업데이트 할 해당 순위를 적용 할 수 있습니다.
(SELECT @curRank := 0, @nextRank := 0, @prevInc := 9999999999, @prevPlace := 0) AS v
3 - 이것은 계급
names.rank = IF( @prevPlace != p.placeRef, @curRank := 0, 0),
4 incrament 때 말해 재설정하는 데 사용되는 몇 가지 변수를 설정 -이 0으로 현재의 순위를 재설정 해킹이 때 새로운 장소
에 MySQL의 반복 이것은 다음과 curre을 업데이트하는 해킹입니다 - 은
names.rank = IF( @prevPlace != p.placeRef, @nextRank := 0, 0),
5 - 새로운 장소
names.rank = IF( @prevInc = p.incidence, @nextRank := @nextRank + 1, @curRank := @nextRank := @nextRank + 1),
6에 MySQL의 반복이 때 0으로 다음 순위를 재설정 해킹 현재 발생 이전 발생
names.rank = IF( @prevInc = p.incidence, @curRank := @curRank, @curRank := @nextRank),
7과 동일 할 때 NT가 위 - 그 발생 빈도는 이전과 동일하거나 외설 경우 순위를 증가 할 때 '마지막 순위와 동일로 순위를 설정 t
names.incidence = @prevInc := names.incidence,
8 -이 이전 발생을 포함하는 변수를 설정하는 해킹, 그래서 우리는 다음 itteration
names.placeRef = @prevPlace := names.placeRef;
9 무엇을 말할 수있다 -이 해킹 t이다 hat은 이전 위치를 포함하도록 변수를 설정하므로 다음 반복에서 수행 할 작업을 결정할 수 있습니다.
SQL 문은 어디에 있습니까? – Raptor
주석을 달려면 잠시만 기다려주세요. –