select*from (select 考场号,考场号 from 
TBL X 
where 
x.姓名 = 'zhang' 
and X.性别= '男' 
order by A desc ,B asc )a
where ROWNUM = 1 
 

解决方案 »

  1.   

    order和rownum有先后问题,就这么简单。先order和后order对产生的rownum是有影响的
      

  2.   

    SELECT * FROM 
           (SELECT 考场号A,考场号B rownumber() over(ORDER BY 考场号A desc ,考场号B asc  ASC) AS rn
     FROM X 
    where 
    x.姓名 = 'zhang' 
    and X.性别= '男' ) AS a1 
        WHERE a1.rn=1我没有做测试,也不知道你用的是什么数据库。
    不知道rownumber() over()能不能用。
      

  3.   

    rownum 与order by 取值顺序如果order by 主键
    则先排序,然后rownum按排序后编号,取rownum=1,则是排序后的第一条如果非主键
    先rownum编号(按读取顺序),再排序,此时取rownum=1,未必是排序后的第一条对于非主键,需要两层sql,内层排序,外层取rownum=1
      

  4.   

    详细解释看此贴
    http://topic.csdn.net/u/20080827/17/5962849a-6504-4b4b-8d71-fcf9bf7f9664.html
      

  5.   

    这条一句是个子查询, 【utpcb】楼说我试了,行,但是还得在外面套一层,我这个语句超长,如果在套一层听麻烦的,不知道各位大侠有没有别的方法???谢谢
      

  6.   

    select * from 表名 where rownum<2;
         就是取出表单中第一条记录;
      

  7.   

    select*from (select 考场号,考场号 from 
    TBL X 
    where 
    x.姓名 = 'zhang' 
    and X.性别= '男' 
    order by A desc ,B asc )a
    where ROWNUM = 1 
      

  8.   

    select * from 表名 where rownum<2;
    或者
    select * from (select (表中的所有字段+num) from 表名)where num=1;肯定可以,不信你试一试!
      

  9.   

    select * from 表名 where rownum <2; 
      

  10.   

    将查询出的记录当作一个表再进行查找
    select 考场号,考场号 from(select 考场号,考场号 from TBL X where x.姓名 = 'zhang' and X.性别= '男' order by A desc ,B asc) rownum=1
      

  11.   

    少了个where
    select 考场号,考场号 from(select 考场号,考场号 from TBL X where x.姓名 = 'zhang' and X.性别= '男' order by A desc ,B asc) where rownum=1