greatest least 函数

网友问我:

update Ta set rmb=

(

select rmb from subA where id=Ta.id

select rmb from subB where id=Ta.id

这两个子查询中rmb较小的一个

)

这个SQL该怎么写?

 

嗯,我们来动手做做

先创建3张表

TasubAsubB 他们结构一样

SQL> desc Ta;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 ID                                                 NUMBER

 RMB                                                NUMBER

 

SQL> select * from Ta;

 

        ID        RMB

---------- ----------

         1          8

 

SQL> select * from subA;

 

        ID        RMB

---------- ----------

         1         10

 

SQL> select * from subB;

 

        ID        RMB

---------- ----------

         1         20

 

按要求,更新后 Ta中的RMB应该是 10

SQL>  update Ta set rmb=(

select least ((select a.rmb from subA a,Ta where a.id=Ta.id),(select b.rmb from subB b,Ta where b.id=Ta.id)) from dual

);

 

1 row updated.

 

SQL> select * from Ta;

 

        ID        RMB

---------- ----------

         1         10                                   //呵呵,说明成功了!

 

顺便想想,如果要把rmb最大的那个值赋给Tarmb怎么做呢?对,用greatest函数!

 

SQL> update Ta set rmb=

(

select greatest((select a.rmb from subA a,Ta where a.id=Ta.id),(select b.rmb from subB b,Ta where b.id=Ta.id)) from dual

);

 

1 row updated.

 

SQL> select * from Ta;

 

        ID        RMB

---------- ----------

         1         20

 

关于greatest函数的说明:

greatest( expr1, expr2, ... expr_n )

expr1, expr2, . expr_n 可以值也可以是函数.

 

函数功能:  取得值最大值。

影响版本:   Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g

 

例子:

greatest(2, 5, 12, 3)   would return 12

greatest('2', '5', '12', '3')   would return '5'

greatest('apples', 'oranges', 'bananas')   would return 'oranges'

greatest('apples', 'applis', 'applas')   would return 'applis'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值