我在查询编写方面不专业,但从我开始使用MySQL时写了很多.最近我发现没有必要AS在名称别名中键入关键字.
SELECT name AS n
Run Code Online (Sandbox Code Playgroud)
等于
SELECT name n
Run Code Online (Sandbox Code Playgroud)
但是我知道这种能力是多年前的.关于这个问题,我有2个问题:
AS关键字是多余的?有时候,当我遇到一个没有AS别名的网站上的自定义查询时,它正在执行MySQL服务,我通过添加AS关键字改变了名称别名的方式,这个小小的改动使它工作了!
这是什么问题?
Mod*_*Joe 19
对于1)的答案,mysql文档http://dev.mysql.com/doc/refman/5.0/en/select.html:
可以使用AS alias_name为select_expr指定别名.别名用作表达式的列名,并且可以在被使用
GROUP BY,ORDER BY或HAVING条款.例如:Run Code Online (Sandbox Code Playgroud)SELECT CONCAT(last_name,', ',first_name) AS full_name FROM mytable ORDER BY full_name;使用标识符别名化select_expr时,AS关键字是可选的.前面的例子可能是这样编写的:
Run Code Online (Sandbox Code Playgroud)SELECT CONCAT(last_name,', ',first_name) full_name FROM mytable ORDER BY full_name;但是,因为AS是可选的,如果您忘记两个select_expr表达式之间的逗号,则会出现一个微妙的问题:MySQL将第二个解释为别名.例如,在以下语句中,columnb被视为别名:
Run Code Online (Sandbox Code Playgroud)SELECT columna columnb FROM mytable;因此,在指定列别名时习惯使用AS是一种好习惯.
不允许在WHERE子句中引用列别名,因为在执行WHERE子句时可能尚未确定列值.请参见第C.5.5.4节"列别名的问题".
对于表,这在语法上也非常相似:
可以使用tbl_name AS alias_name或tbl_name alias_name对表引用进行别名化:
Run Code Online (Sandbox Code Playgroud)SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 WHERE t1.name = t2.name; SELECT t1.name, t2.salary FROM employee t1, info t2 WHERE t1.name = t2.name;
对于2)的答案,我认为无论如何,如果没有软件版本的完整描述,运行查询和收到错误消息,您都无法判断.
| 归档时间: |
|
| 查看次数: |
45769 次 |
| 最近记录: |