SET @C = 0;SET @A = '';
UPDATE `cifi_bi`.`rp_pr_my_monthly_report_m_sign` d
SET d.`rank` =
(
SELECT
CASE WHEN d.`id` is not null
THEN @C := @C + 1
ELSE
(@C := @C +1 AND @A := d.`PRA11`)
END
)
where
d.years = 2018
AND d.months = 12
ORDER BY CASE PRA13 WHEN 0 THEN PRA13 ELSE PRA11/PRA13 END desc;
case when条件可以用来做本行数据和上一行数据对比使用。这样可以实现一些特殊的排序需求,比如值相同的给相同的排序值。