zoukankan      html  css  js  c++  java
  • ROW_NUMBER()

    因为两种Oracle数据库中对于结果行号的处理异同造成的。
    
    在MSSQLServer中,可以使用top和ROW_NUMBER()方法的结合来实现,一般写法比较简单,而Oracle则有很大的不同。
    
    只能通过ROWNUM来实现,我们这里主要说明一下,如何使用ROWNUM来实现一些常用的Oracle分页和排序查询,有关ROWNUM的概念,随便搜一下,有很多详细的解释都很清晰,就不赘述了。
    
    1.查询前10条记录
    
     SELECT * FROM TestTable WHERE ROWNUM<=10
    
    2.查询第11到第20条记录
    
    SELECT * FROM
    	 ( 
    			 SELECT TestTable.*, 
    			ROWNUM ro FROM TestTable
    			WHERE ROWNUM<=20
    	)
    WHEREro>10
    
    3.Oracle分页和排序:按照name字段升序排列后的前10条记录
    
    SELECT * FROM
    (SELECT * FROM TestTable ORDER BY name ASC)
    WHERE ROWNUM<=10
    
    4.按照name字段升序排列后的第11到第20条记录
    
    SELECT  * FROM 
    ( 
    		SELECT tt.*,ROWNUM ro FROM
    		( SELECT * FROM TestTable ORDER BY name ASC) tt
    		WHERE ROWNUM<=20
    )
    WHERE  ro>10
    
    例:
    
    SELECT rownum,ss.* FROM
    (SELECT s.*,ROWNUM ro FROM
    (SELECT * FROM spr_student ORDER BY s_id ASC)s
    WHERE ROWNUM<=15)ss
    WHEREro>10
    
    select * fromspr_student;
    
    以上此条语句可能是在查询排序和Oracle分页的时候最常用到的语句,其中没有添加条件,因为不影响语句的结构。虽然性能有所影响,但可能只是最内层的查询可能会有多查数据的可能,但对于外层的再排序再选择来说,应该影响很小。
    
    
    
     mysql:  select * from table order by column1 desc limit 5;
     oracle: select top 5 * from table order by column1 desc;
      mssql:   select top 5 * from table order by column1 desc
    	
    

      

  • 相关阅读:
    R绘图学习笔记
    SVM与LR的比较
    精简android4.2
    vbox下android分辨率设置
    centos7命令
    mysql设置编码
    virutalbox虚拟机硬盘扩容
    spring boot学习
    SQL Server 2012清除连接过的服务器名称历史
    android AutoCompleteTextView和Spinner选中项加亮
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/11349061.html
Copyright © 2011-2022 走看看