zoukankan      html  css  js  c++  java
  • 1.6 在WHERE子句中引用取别名的列


    如下查询,会抛出错误:

    mysql> select sal as salary, comm as commission from emp where salary < 5000;
    ERROR 1054 (42S22): Unknown column 'salary' in 'where clause'


    解决方案

    将查询作为内联视图就可以就可以引用其中别名的列了:

    select *
    from (
    select sal as salary, comm as commission
    from emp ) x
    where salary < 5000

    在这个简单的示例中,可以不使用内联视图,也不用在WHERE子句中直接引用COMM或SAL而得到相同的结果。本方案介绍的方法在下列情形的WHERE子句都可以使用:

    聚集函数
    标量子查询
    视窗函数
    别名

    将取别名的查询作为内联视图,便可以在外部查询中引用其别名列,为什么要这么做呢?WHERE子句是在SELECT子句之前进行处理的,在处理求解查询“问题”WHERE子句之前,SALARY和COMMISSION并不存在,要到WHERE子句处理完成之后,别名才有效。然而,FROM子句是在WHERE子句之前进行处理的。将原始查询放在FROM之句之中,那么,在最外层的WHERE子句之前,以及最外层的WHERE子句“看到”别名之前,就已经生成了查询结果。

  • 相关阅读:
    第十二周
    第十一周作业
    第十周作业
    第九周作业
    第五周总结和实验报告三
    第四周总结和实验报告二
    第一周实验报告和第三周课程总结
    第二周总结
    2019春总结作业
    2019年春第二次课程设计实验报告
  • 原文地址:https://www.cnblogs.com/liang545621/p/12704575.html
Copyright © 2011-2022 走看看