紫宇寰 2021-01-06 10:47 采纳率: 0%
浏览 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 也可以

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable