select * from activity where bizsequence = '3533dc4f-00f5-1000-e000-000fc0a858ba' and rownum <= 1 order by operateDate desc

解决方案 »

  1.   

    忘了说了 我用的是sybase好像不支持rownum关键字
      

  2.   

    关于取一个集合前几条数据的问题:
    1.  SQL  SERVER  :  用  TOP  N  (WITH  TIES)
    M1:  
    SELECT  TOP  N  *  FROM  MYTABLE  ORDER  BY  ORD_COL;
    M2:  
    SELECT  TOP  N    WITH  TIES  *  FROM  MYTABLE  ORDER  BY  ORD_COL;
    注:  SQL  SERVER  7提供了PERCENT  N  WITH  TIES,  ACCESS  中提供了TOP  N,但含义是M  2.
    2.  ORACLE  8i:  用  ROWNUM<=N
    M1:
    SELECT  *  FROM  
              (  SELECT  *  FROM  MYTABLE  ORDER  BY  ORD_COL  DESC)  
    WHERE  ROWNUM<=N
    M2:
    SELECT  *  FROM  MYTABLE  WHERE  ORD_COL>=
          (SELECT  MIN(ORD_COL)  FROM  
                    (  SELECT  *  FROM  MYTABLE  ORDER  BY  ORD_COL  DESC)  
            WHERE  ROWNUM<=N)
    ORDER  BY  ORD_COL  DESC
    注意以下两种错误用法:
    WRONG  1:
    SELECT  *  FROM  MYTABLE
    WHERE    ROWID<=N
    ORDER  BY  ORD_COL  DESC;WRONG  2:(因为WHERE  ROWNUM<=N  在ORDER  BY  前执行)
    SELECT  *  FROM  MYTABLE
    WHERE    ROWNUM<=N  
    ORDER  BY  ORD_COL  DESC;3:  DB2
    用FETCH  FIRST  N  ROWS  ONLY  
    M1:  
    SELECT  *  FROM  MYTABLE
    ORDER  BY  ORD_COL  DESC
    FETCH  FIRST  N  ROWS  ONLY
    M2:
    没有找到,因为DB2不允许在FROM中嵌套有ORDER  BY子句的子查询.
      

  3.   

    select * from activity where operateDate = (select max(operatedate) from activity where bizsequence = '3533dc4f-00f5-1000-e000-000fc0a858ba' )
      

  4.   

    select date from (select * from (select * from 表名 where条件)order by date desc ) where rownum<2;