标准的 SQL 解析顺序

发布时间:2014-10-25 2:23:09
来源:分享查询网

晚上在论坛上看到一条SQL查询语句的问题,如下所示: select *,row_number() over(order by productname) as rownumber from products where rownumber between 10 and 20  问题是这条SQL语句会报错。经过分析发现,这跟SQL的解析顺序有关系。因为在计算where的时候row_number还没算出来。所以SQL语句会报错。 标准SQL解析顺序如下所示:    (1).FROM 子句, 组装来自不同数据源的数据   (2).WHERE 子句, 基于指定的条件对记录进行筛选   (3).GROUP BY 子句, 将数据划分为多个分组   (4).使用聚合函数进行计算   (5).使用 HAVING 子句筛选分组   (6).计算所有的表达式   (7).使用 ORDER BY 对结果集进行排序

返回顶部
查看电脑版