您的位置:程序门 -> oracle -> 开发



关于oracle中取最大值的一点疑惑...


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于oracle中取最大值的一点疑惑...[已结贴,结贴人:bitpolar]
发表于:2007-02-07 09:20:39 楼主
在sql   server中
select   top   1   id   from   table1   order   by   price   desc
会先将price排逆序   然后取第一个   这根下面这个是一样的
select   id   from   table1   where   price=(select   max(price)   from   table1)
在oracle中好像只能用第二种方式来写
select   id   from   table1   where   rownum=1   order   by   price   desc
好像是先随机取一条数据   然后把rownum=1   附加在该记录后面   明显不符合要求
如果先排序
select   id   from   (select   id   from   table1   order   by   price   desc   )   where   rownum=1
我的目的就是先排序   然后再取第一条(这个是否应该也是从括号里面select的结果中随机取一条记录?   并不一定取price最大的那个)

如果出现上面这种情况,sql语句一般怎么处理?
发表于:2007-02-07 10:11:431楼 得分:20
rownum是oracle的伪列,

若想取最大值,可以使用你的最后一种方法:
select   id   from   (select   id   from   table1   order   by   price   desc   )   where   rownum=1
发表于:2007-02-07 10:40:332楼 得分:20
楼上的可以,如果想要准确的
我给你提供一个取任意行的
select   id   from(
select   rownum   rn,id   from   (select   id   from   table1   order   by   price   desc   ))
where   rn   =   1   --(rn   between   11   and   20)   这方法可以帮助你分页等类似的功能
发表于:2007-02-07 10:54:443楼 得分:10
帮你顶
发表于:2007-02-07 11:03:354楼 得分:20
select   id   from(
select   rownum   rn,id   from   (select   id   from   table1   order   by   price   desc   ))
where   rn   =   1   --(rn   between   11   and   20)   这方法可以帮助你分页等类似的功能
发表于:2007-02-08 10:46:295楼 得分:10
select   id   from   (select   id   from   table1   order   by   price   desc   )   where   rownum=1
你这个取到的是你原始表里的第一条,隐藏项rownum的值并没因为你的排序而改变,楼上的那个方法很好.
发表于:2007-02-08 11:15:316楼 得分:5
tgm78(shop34161266.taobao.com)

你为什么吧我再别地方的话拿过来用?连个招呼也不打
发表于:2007-02-08 11:32:357楼 得分:5
蝌蚪发彪了。哈哈
发表于:2007-02-08 11:54:358楼 得分:5
哈哈哈   也许人家也是那么想的那  

说明你们俩想到一块去了       呵呵
发表于:2007-02-08 11:58:299楼 得分:5
想到一块也不能大小写   换行的地方,   注释   都一摸一样吧
哈哈
共同学习,我没其他意思
开个玩笑


快速检索

最新资讯
热门点击