关于Oracle中取最大值的一点疑惑...
在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语句一般怎么处理?
------解决方案--------------------rownum是ORACLE的伪列,
若想取最大值,可以使用你的最后一种方法:
select id from (select id from table1 order by price desc ) where rownum=1
------解决方案--------------------楼上的可以,如果想要准确的
我给你提供一个取任意行的
SELECT ID FROM(
select ROWNUM RN,id from (select id from table1 order by price desc ))
WHERE RN = 1 --(RN BETWEEN 11 AND 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) 这方法可以帮助你分页等类似的功能
------解决方案--------------------select id from (select id from table1 order by price desc ) where rownum=1
你这个取到的是你原始表里的第一条,隐藏项rownum的值并没因为你的排序而改变,楼上的那个方法很好.
------解决方案--------------------tgm78(shop34161266.taobao.com)
你为什么吧我再别地方的话拿过来用?连个招呼也不打
------解决方案--------------------蝌蚪发彪了。哈哈
------解决方案--------------------哈哈哈 也许人家也是那么想的那
说明你们俩想到一块去了 呵呵
------解决方案--------------------想到一块也不能大小写 换行的地方, 注释 都一摸一样吧
哈哈
共同学习,我没其他意思
开个玩笑