SQL的查询模型简析(2)

来源:未知 责任编辑:责任编辑 发表时间:2013-11-26 22:15 点击:

 
步骤4:HAVING 阶段
 
having筛选器用于对上一步返回的表中的组进行筛选,逻辑为true保留,having是唯一可用于分组数据的筛选器。
 
步骤5:select阶段
 
select子句出现在查询语句的最前面,但是放在第五步处理,将构造最终返回给调用者的表,其中有三个子阶段:计算表达式 可以对列名取别名、distinct、Top选项。
 
步骤6:ORDER BY阶段
 
这一步按ORDER BY子句中的列名列表对上一步返回的表进行排序,返回游标。ORDER BY是唯一可以使用select列表中创建列别名的步骤。
 
ORDER BY与top同时使用情况:
在逻辑上,top选项是在ORDER BY排序阶段之前,作为select的一部分处理,它的目的是基于某种顺序的逻辑定义,筛选出请求的数量或者百分比的行。
 
可惜top没有自己排序子句,而是借助同一查询中的ORDER BY子句来提供逻辑排序,但是ORDER BY子句又是用于对查询结果的排序。这样一来就不能为top和查询结果分别定义排序逻辑,这就是top选项的限制。所以sql Server是这样实现两者关系的:当最外层查询中使用top,ORDER BY 有两种作用:为top定义行的逻辑优先顺序、为结果游标定义排序顺序。当top定义表表达式时,只有第一种作用,会返回一个表。
其他的一些小知识
表运算符:join等
集合运算符:union等
over子句与聚合函数一起使用:
select OrdreID,Count(*) over(partition by customerid) as num from orders
over子句与row_number函数一起使用:  www.2cto.com  
SELECT 
    ROW_NUMBER() OVER (ORDER BY A.InDate ASC) AS RowNumber
    ,A.[SysNo]
    ,A.[Content]
    ,A.[Type]
    ,A.[InDate]
FROM INFO A WITH(NOLOCK)
 
 
 
作者 八神吻你
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • SQL编程(一)
  • LINUX上RMAN自动备份脚本
  • sql server面试题
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
  • SQL小技巧系列 --- 行转列合并
  • sql server 列转行

数据库技术导航

SqlserverMysqlOracleDB2数据库数据库综合
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1