紫宇寰 2021-01-06 10:47 采纳率: 50%
浏览 25

sql中if函数问题

 

set @rank=0;
select *,
@cv:=(
SELECT CONFIG_VALUE_TYPE from fcs_system_config ORDER BY CONFIG_VALUE_TYPE DESC limit 1
) as cv,
if (@cv=CONFIG_VALUE_TYPE,@rank:=@rank+1,@rank:=1) as rank
from fcs_system_config where state=1
ORDER BY CONFIG_VALUE_TYPE DESC

目的:

根据CONFIG_VALUE_TYPE中相同的值进行序号递增,当CONFIG_VALUE_TYPE中的值变化之后,重新开始计数

问题点:

在if中,为false的情况下,我需要同时更新两个变量,一个是@cv,一个是@rank,这个怎么实现?

有没有优化方式?说实话这么写我自己都觉得很傻

我知道可以用rowNumber函数可以实现,但是数据库限制不能使用该函数,我怎么通过这种自定义变量的方式进行实现呢?

  • 写回答

2条回答 默认 最新

  • damoneric_guo 2021-01-06 11:12
    关注

    case when 也可以

    评论

报告相同问题?