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)
作者 八神吻你
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>