十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
sqlserver查询的执行顺序是:
上高网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
(1)FROM
left_table
join_type
JOIN
right_table
ON
on_predicate
(2)WHERE
where_predicate
(3)GROUP
BY
group_by_specification
(4)HAVING
having_predicate
(5)SELECT
DISTINCT
TOP(top_specification)
select_list
(6)ORDER
BY
order_by_list
所以在where执行的时候,别名还不存在,而order
by的时候已经存在
A2,A4为原来的,其余是分类汇总的
作用域的分别主要是知道语句中子查询的执行顺序,如果到了外层查询进行重命名了,那么内层的就没有用了。
其实有三种方法
select sum(quantity) as 别名 from order_list
select sum(quantity) 别名 from order_list
select 别名1=sum(quantity),别名2=... from order_list
如果列的名字不确定的话,还可以用 case when then end 语句进行循环取列名的。
这是sql在sqlserver中物理查询顺序的问题,看下图
where字句会在select之前执行,那么自然无法知道select中的列别名A到底是什么东西,它只会检查A到底是不是AL_ReturnApply的列名,如果不是那么就会编译出错,关于物理查询顺序,在sql2005(8)技术内幕的书中都有讲到
SQLServer 不支持这样的别名
select t.sexNum,(t.sexNum + 0.0)/(SELECT COUNT(username) sexNum FROM Tdiaocha)*100 as MyPercent from ( SELECT COUNT(sex) sexNum FROM Tdiaocha GROUP BY sex) t