Problem
You have used aliases to provide more meaningful column names
for your result set and would like to exclude some of the rows using the WHERE
clause. However, your attempt to reference alias names in the WHERE clause
fails:
select sal as salary, comm as commission
from emp
where salary < 5000
如果你想要直接在WHERE 里面使用别名是行不通的
Solution
By wrapping your query as an inline view you can reference the
aliased columns:
1 select *
2 from (
3 select sal as salary, comm as commission
4 from emp
5 ) x
6 where salary < 5000
解决办法是使用子查询的方式
Discussion
In this
simple example, you can
avoid the inline view and reference COMM or SAL directly in the
WHERE clause to achieve the same result. This solution
introduces you to what you would need to do when attempting to reference any
of the following in a
WHERE
clause:
-
Aggregate functions
-
Scalar subqueries
-
Windowing functions
-
Aliases
Placing your query, the one giving aliases, in an inline view
gives you the ability to reference the aliased
columns in your outer query. Why do you need to do this?
The WHERE clause is evaluated before the SELECT, thus, SALARY and COMMISSION do
not yet exist when the "Problem" query's WHERE clause is evaluated. Those
aliases are not applied until after the WHERE clause processing is complete.
However, the FROM clause is evaluated before the WHERE. By placing the original
query in a FROM clause, the results from that query are generated before the
outermost WHERE clause, and your outermost WHERE clause "sees" the alias names.
This technique is particularly useful when the
columns in a table are not named particularly well.
原因是WHERE子句的分析早于SELECT子句,因此,直接在WHERE子句中使用别名的时候,别名还没有被创建出来,所以,这个时候WHERE“看不到”别名。解决方法之所以奏效,是因为FROM子句的分析早于WHERE子句。
分享到:
相关推荐
1. 书籍信息:该文档是一本名为《SQL Cook Book》的电子书,由Graeme Birchall撰写,专门针对DB2 for LUW(Linux, Unix, Windows)环境,提供了大量的示例代码、技巧和提示。 2. 书籍版本及更新:文档特别提到,这...
一本很好的DB2sql教材!
sql笔记sql笔记sql笔记sql笔记sql笔记sql笔记
SQL课堂培训笔记疯汉三版【Oracle+Sqlserver+Mysql】 根据韩顺平老视的视频教程整理的笔记,PDF格式
SQL Server 2005是一个强大的关系型数据库管理系统,由微软公司开发。郝斌老师的笔记主要涵盖了数据库的基础概念、操作以及约束等方面的知识,旨在帮助学习者更好地理解和记忆SQL Server 2005的关键点。 首先,...
笔记是本人学习SQLServer一段时间后重新整理出来的,适合有一些入门基础的人学习。 ├─01 安装及使用 │ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql │ ├─03 建表、建库 │ create.sql ...
这份"sql server数据库笔记.zip"包含了两个子文件,分别是"sql server数据库笔记01.enex"和"sql server数据库笔记02.enex",很可能记录了关于SQL Server的重要概念、操作技巧和实践经验。 首先,SQL(Structured ...
【JAVA与Sql学习笔记】 在Java编程中,与SQL数据库的交互是不可或缺的一部分。这篇学习笔记主要关注如何在Oracle数据库中使用PL/SQL的FORALL语句进行批量操作,以及如何利用批绑定(Bulk Binding)来提升性能。此外...
SQL Server 数据库管理笔记 SQL Server 是一种关系型数据库管理系统,由 Microsoft 公司开发,广泛应用于各种行业和领域。作为一名 ITIndustry 大师,我将根据提供的文件信息,总结出相关的知识点,帮助您快速了解 ...
1. **SQL基础** - 数据库概念:了解什么是数据库,它的作用以及数据库管理系统(DBMS)如何工作。 - SQL简介:介绍SQL语言的基本结构和功能,包括DML(数据操纵语言)、DDL(数据定义语言)和DCL(数据控制语言)...
#### 一、SQL Server 的安装与配置 **1. 安装步骤:** - **准备阶段:** 首先确保安装环境中满足SQL Server的最低硬件要求,并且操作系统兼容。 - **安装介质:** 获取SQL Server安装介质,通常为ISO镜像或安装包。...
在标题“SQL_Server学习笔记”和描述“关于SQL学习的笔记,可以在有SQL基础之上,平时学习或者工作开发时当做查阅资料”中,我们可以得知这份文件是一份SQL Server的学习资料。这部分内容将涵盖SQL Server的基础知识...
SQL Server 2008 是微软推出的一款关系型数据库管理系统,是DBMS(Database Management System)的典型代表,广泛应用于企业级数据存储和管理。在SQL Server 2008的学习过程中,首先需要理解数据库系统的基本结构,...
这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...
### SQLServer个人学习笔记知识点概览 #### 一、日期格式转换:`SELECT REPLACE(CONVERT(CHAR(8),GETDATE(),120),'-','')` - **知识点**:使用`CONVERT`函数将当前系统时间`GETDATE()`转换为指定格式的字符串,并...
1. **子查询**:子查询是嵌套在其他查询内部的查询,用于获取一个或多个值,这些值可以作为外部查询的一部分使用。子查询可以用于比较、联接、集合操作等,例如在WHERE子句中使用IN、NOT IN、ANY、ALL等操作符。 2....
标题“20170909学习sql笔记”表明这是一个关于SQL学习的资料,可能包含了一天的学习记录或者一个教程的集合。SQL,全称Structured Query Language,是用于管理和处理关系数据库的标准语言。这个标题暗示我们将探讨...