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

回到顶部