日期:2014-05-17  浏览次数:20639 次

sortorder和rownum同时使用的问题
tableA
ID,Name,SortOrder
1     A         5
2     B         3
3     C         4
4     D         1

找出SortOrder小于某个值的最大记录.

如SortOrder=5时,应该找出SortOrder=4的记录

我的sql:
select   *   from   tableA   where   rownum=1   and   sortOrder <5   order   by   sortOrder   desc

但是这个找出的结果不是每次都正确.

而必须要用
select   *   from   (select   *   from   tableA   where   sortorder <5   order   by   sortOrder   desc)   where   rownum=1

请问有什么简单的办法?



------解决方案--------------------
select *
from tableA
where SortOrder in (select max(SortOrder)
from tableA
where SortOrder <5)
------解决方案--------------------
up
------解决方案--------------------
第一个是先排序,在筛选。
第二个是用函数查找,如果表内容很多时,我认为第二个速度能快一些

------解决方案--------------------
select * from tableA where rownum=1自然排序下第一行纪录 后面的条件都已经不起作用了

暂时没有什么简单的办法,
------解决方案--------------------
select * from (select * from tableA where sortorder <5 order by sortOrder desc) where rownum=1


貌似就这个了
------解决方案--------------------
select * from (select * from tableA where sortorder <5 order by sortOrder desc) where rownum=1
最简单的了!
------解决方案--------------------
问下楼主,锄禾是谁啊?
------解决方案--------------------
select * from (select * from tableA where sortorder <5 order by sortOrder desc) where rownum=1
多聯想到嵌套select語句。