美文网首页
SQL语句中,子句不能使用列别名问题

SQL语句中,子句不能使用列别名问题

作者: sumu90 | 来源:发表于2019-11-28 14:08 被阅读0次

转载:SQL语句Where中使用别名作为判断条件 - 笨笨丁 - 博客园

当select的表达式很长时,我们经常会用as子句为该表达式指定别名,然而却发现无法在Where条件中直接使用该别名作为判断条件.

例如下面的SQL语句:

select id, (c1 + c2) as s from t1 where s > 100

运行会报错: “列名 s 无效”

当然,写成

select id, (c1 + c2) as s from t1 where (c1 + c2) > 100

就可以。

SQL语句中,为什么where子句不能使用列别名,而order by却可以?

在ORACLE中,select 语句的执行顺序是:

1. from语句

2. where语句(结合条件)

3. start with语句

4. connect by语句

5. where语句

6. group by语句

7. having语句

8. model语句

9. select语句

10. union、minus、intersect等集合演算演算

11. order by语句

在SQLServer中,select语句的执行顺序是:

(1)FROM JOIN ON

(2)WHERE 

(3)GROUP BY

(4)HAVING

(5)SELECT DISTINCT TOP() 

(6)ORDER BY

由select语句的执行顺序,我们可以发现在where子句执行的时候,取别名的语句还没执行,即该别名不存在,自然就不能使用了,而order by的时候别名就已经命名好了。

我们还可以知道:如果在from子句中指定了表别名,那么它所在的select 语句中其他子句都必须使用表别名来代替原始的表名,因为from子句是select语句中最先被执行的。

相关文章

  • SQL语句中,子句不能使用列别名问题

    转载:SQL语句Where中使用别名作为判断条件 - 笨笨丁 - 博客园 当select的表达式很长时,我们经常会...

  • 高性能SQL查询

    1 SELECT 子句中避免使用 * 当你想在 SELECT 子句中列出所有的 COLUMN 时,使用动态 SQL...

  • MySQL查询技巧2

    注:MySQL8 中支持窗口函数(window functions) 在WHERE子句中引用别名列:将含有别名的列...

  • 【笔记】T-SQL数据查询

    一. 简单查询 1. 简单查询T-SQL代码 2. 在查询中使用列的别名: 使用AS子句来改变结果集中列的名称 使...

  • 2021-10-25

    1.sql语句尽量大写 2.尽量写表的别名 3.SELECT I子句中避免使用* 4.避免使用耗费资源的操作 带有...

  • HQL操作之DQL命令

    HQL操作之DQL命令 基本查询 where 子句 Where 子句不能使用列的别名 备注:通常情况下NULL不参...

  • MySQL学习day-34:子查询与分页

    一、子查询 可以将子查询放在许多的 SQL 子句中,包括:WHERE 子句; HAVING 子句;FROM 子句。...

  • chapter16:创建高级联结

    使用表别名 SQL允许给表名起别名,理由如下: 缩短SQL语句; 允许在单挑SELECT语句中多次使用相同的表。例...

  • 面试题汇总(数据库)

    SQL查询 SQL优化 1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表...

  • SQLite学习三、Glob 子句

    之前的SQL中我们学习了在Like子句中使用通配符去匹配字符,这里我们来学习一下在SQLite中使用Glob 子句...

网友评论

      本文标题:SQL语句中,子句不能使用列别名问题

      本文链接:https://www.haomeiwen.com/subject/zzhbwctx.html