标准的 SQL 解析顺序

晚上在论坛上看到一条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 对结果集进行排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值