我只学过这种:SELECT 数量,价格,数量*价格 AS 总价 FROM 购物清单 //AS在SELECT里面第一条语句:
SELECT 姓名,(SELECT COUNT(*) FROM 订单主表 WHERE 订单主表.客户编号 = 客户表.客户编号) AS 总数 FROM 客户表这是一条嵌套查询,AS却不在SELECT里面第二条语句:
(SELECT 姓名 FROM students) AS 学生姓名 //报错
既然第一条语句,AS可以在整个语句外面,为什么第二条语句却报错,我只学过AS在SELECT里面的,请问,到底规则是怎样的?
SELECT 姓名,(SELECT COUNT(*) FROM 订单主表 WHERE 订单主表.客户编号 = 客户表.客户编号) AS 总数 FROM 客户表这是一条嵌套查询,AS却不在SELECT里面第二条语句:
(SELECT 姓名 FROM students) AS 学生姓名 //报错
既然第一条语句,AS可以在整个语句外面,为什么第二条语句却报错,我只学过AS在SELECT里面的,请问,到底规则是怎样的?
解决方案 »
- Gridview控件, 能不能在没有数据源的时候也显示出来
- sql server 中有什么sql语句可以把表的所有字段显示出来
- 100分求“"ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION”解决办法
- 在线等待---ROW_NUMBER()可否应用在where子句中?
- 给个微软认证的考试卷
- 如何改变数据库中表的所有者>?
- 在SQL Server中写SQL语句不写order by的话,默认排序是什么规矩?2000和2005不一样吗?
- ORDER BY 非得和 TOP 一起用吗?哪位大哥给我指点迷津???
- 同一个存储过程,为什么在Query Analyzer 运行能正确统计,但是在自动执行时统计遗漏
- 问个棘手的问题
- 一个兼容性的问题哦。
- 为何【用友、金蝶】的erp系统的数据库中,不设表间的关联和约束呢?
AS 子句可用来更改结果集列的名称或为派生列分配名称。如果结果集列是通过对表或视图中某一列的引用所定义的,则该结果集列的名称与被引用列的名称相同。AS 子句可用来为结果集列分配不同的名称或别名。这样做可以增加可读性。例如: 复制代码
USE AdventureWorks2008R2;
GO
SELECT BusinessEntityID AS "Employee Identification Number"
FROM HumanResources.Employee;
在选择列表中,有些列进行了具体指定,而不是指定为对列的简单引用,这些列便是派生列。除非使用 AS 子句分配了名称,否则派生列没有名称。在以下示例中,如果删除 AS 子句,则使用 DATEDIFF 函数指定的派生列将会没有名称: 复制代码
SELECT SalesOrderID,
DATEDIFF(dd, ShipDate, GETDATE() ) AS DaysSinceShipped
FROM AdventureWorks2008R2.Sales.SalesOrderHeader
WHERE ShipDate IS NOT NULL ;
AS 子句是在 ISO 标准中定义的语法,用来为结果集列分配名称。下面是要在 SQL Server 2005 中使用的首选语法。 复制代码
column_name AS column_alias
或者 复制代码
result_column_expression AS derived_column_name
为了与 SQL Server 的早期版本兼容,Transact-SQL 还支持以下语法: 复制代码
column_alias = column_name
或者 复制代码
derived_column_name = result_column_expression
例如,上一个示例可用下列代码替换: 复制代码
SELECT SalesOrderID,
DaysSinceShipped = DATEDIFF(dd, ShipDate, GETDATE() )
FROM AdventureWorks2008R2.Sales.SalesOrderHeader
WHERE ShipDate IS NOT NULL
SELECT 姓名 AS 学生姓名 FROM students
--虽然第一个语句(SELECT COUNT(*) FROM 订单主表 WHERE 订单主表.客户编号 = 客户表.客户编号) AS 总数 是这样,但是这个也是作为前面一个select的查询列,因此也相当于给第一个select的查询列派生别名
到底是怎样的哦?
as放在表后面时就是给table起个别名了。
第一条语句:
SELECT 姓名,(SELECT COUNT(*) FROM 订单主表 WHERE 订单主表.客户编号 = 客户表.客户编号) AS 总数 FROM 客户表这是一条嵌套查询,AS却不在SELECT里面第二条语句:
(SELECT 姓名 FROM students) AS 学生姓名 //报错
-------------------------------------------
第一句可以看成:
select 姓名,
(xxxx) --括号里的整句其实就是一个列,后面如果跟as就是给这个列起名。同时AS也包含在最外围的SELECT语句里呢
from 客户表第二句:
(xxxx)--括号里是完整表,那么AS在后面的话就代表给这个表起个别名。 但是你去想,单单一个表名,你执行它,会是什么结果?