sql语句的执行顺序和别名问题

sql语句的别名问题:
where后不能用字段的别名因为

一、sql执行顺序
(1)from
(3)join
(2)on
(4)where
(5)group by(使用select中的别名)
(6)avg,sum….
(7)having
(8)select
(9)distinct
(10)order by

1、在MySQL中:
(1)group by中可以使用字段别名;
(2)where中不能使用字段别名;
(3)order by中可以使用字段别名;
(4)删除语句的表别名用法:

错误用法:delete from table as a;
正确用法:delete a from table as a;
需要在delete后边加上表的别名;

(5)子查询使用父查询别名问题:
子查询可以使用上一层级父查询的别名,但是无法找到上两层级父查询的别名;

2、在Oracle中:
1)where/group by/having子句中只能直接使用栏位或者常量,而不能使用栏位的别名,除非这个别名来自子查询之中,如:select …. from (select col1 ccc from table) where ccc > 1
2)而order by 则可以直接使用别名,如select col1 ccc from table order by ccc

    原文作者:SQL
    原文地址: https://blog.csdn.net/menghuanzhiming/article/details/73613269
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞