A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭正续 中级黑马   /  2012-10-17 12:56  /  1686 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

昨天晚上我在查询时,突然发现一个问题,就是查询后给查询的列起名字,我习惯用as,比如
select COUNT(*) as 人数 from T_Grade group by 课程编号
结果发现把as去掉居然没报错,汗,SQL也这么不严谨么?求高手指点

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
一样的,两种都可以,个人感觉比较喜欢用as,这样读起来更通顺,符合英语的语法,哈哈

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
SQL Server 2008 文档:AS 子句可用来更改结果集列的名称或为派生列分配名称。

加AS  是 ISO 标准SQL的语法。
不加AS是微软SQL Server的方言Transact-SQL 的语法,但是T-SQl是兼容ISO-SQL的,所以在有原名的地方加不加都行啊。

如果没有原名,比如表示的是一个子查询的结果集,那么用AS给取一个名字!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
AS 子句可用来更改结果集列的名称或为派生列分配名称。

如果结果集列是通过对表或视图中某一列的引用所定义的,则该结果集列的名称与被引用列的名称相同。AS 子句可用来为结果集列分配不同的名称或别名。这样做可以增加可读性。例如:

USE AdventureWorks;
GO
SELECT EmployeeID AS "Employee Identification Number"
FROM HumanResources.Employee;

在选择列表中,有些列进行了具体指定,而不是指定为对列的简单引用,这些列便是派生列。除非使用 AS 子句分配了名称,否则派生列没有名称。在以下示例中,如果删除 AS 子句,则使用 DATEDIFF 函数指定的派生列将会没有名称:

SELECT SalesOrderID,
       DATEDIFF(dd, ShipDate, GETDATE() ) AS DaysSinceShipped
FROM AdventureWorks.Sales.SalesOrderHeader
WHERE ShipDate IS NOT NULL

AS 子句是在 ISO 标准中定义的语法,用来为结果集列分配名称。下面是要在 Microsoft 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 AdventureWorks.Sales.SalesOrderHeader
WHERE ShipDate IS NOT NULL

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
应该是需要定义as的,它是给其起个别名嘛!你说的这个我还没用过,不过如果把as去掉的话,这个SQL语句在执行的时候会报错的吧(光秃秃的几个汉字在那里放着)。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马