问题如下
数据库中一张表如下
表内字段纵向排列,存在关系
0<=X<2 的话 X属于A分类
2<=X<4 的话 X属于B分类
4<=X<6 的话 X属于C分类
6<=X<8 的话 X属于D分类
8<=X 的话 X属于E分类
那么在X 为任意数值的情况下如何得出 X的值
最终完成的sql 求未知X对应的分类名
select
分类名,
min(分类范围)as 每个代码对应的最小值
from 表名
where
分类范围 <= X
group by 分类名
order by 每个代码对应的最小值 desc
limit 0,1
图解过程
接下来我们用图形的方式来看一下解答过程,这里假设X的值为 7
首先求出小于X的集合 ,效果图(黄色背景格)以及sql实现如下:
sql实现 : select 分类名 ,分类范围 from 表名 where 分类范围< 7
然后进行聚合分类,求出每个分类名的最小值的集合 :红色字体内容
sql实现 : select 分类名 ,min(分类范围) from 表名 where 分类范围< 7 group by 分类名
得到集合
最后对进行倒序排列
sql实现 : select 分类名 ,min(分类范围) from 表名 where 分类范围< 7 group by 分类名 order by 分类范围 desc
最后只保留第一个 即可得到对应的分类名