oracle 在查不到数据的情况下,怎么动态地返回一个值?
一、建表
student 表id name score
1 allen 100
2 susan 90
3 ben 80
二、问题描述
- 假如我要查一个score<20的id,肯定是查不到的,此时我需要返回一个id最大的数据回去(3)。- 我知道用NVL()可以做到 -> NVL(SUM(id), 3)id,但是会有以下问题。
- 这个表以后可能会插入新的数据,比如 4 jack 120,此时在查不到数据的情况下需要返回的就是 4。如果是这样,NVL()就要改里面的内容。
- 有没有一种写法或者函数或者什么东西,可以动态地返回我要的数据?我试了下,NVL()里没法写动态东西,比如NVL(SUM(id), select max(id) from student)id
- 或者从mybatis的角度实现也可以
请大神指教,谢谢
回答:
如果score<20的数据只有一条的话,
select tt.id from (select t.id,t.score from (select id from student where score <20
union
select max(id),
(select score from student s where s=(select max(id) from student))
from student) t
order by t.score asc)tt
where rownum=1
以上是 oracle 在查不到数据的情况下,怎么动态地返回一个值? 的全部内容, 来源链接: utcz.com/p/944408.html