MySQL AS关键字

时间:2013-10-24 13:43:34

标签: mysql

我在查询编写方面不专业,但从我开始使用MySQL时写了很多。最近我发现没有必要在名称别名中键入AS关键字。

SELECT name AS n

等于

SELECT name n

但是我知道这种能力已经存在多年了。关于这个问题,我有2个问题:

  1. AS关键字是多余的?
  2. 有时候,当我在一个没有AS别名的网站上遇到自定义查询时,它正在执行MySQL服务,我通过添加{{1}改变了名称别名的方式}关键字,这个小小的改变让它发挥作用!

    这里有什么问题?

1 个答案:

答案 0 :(得分:17)

对于1)的答案,mysql文档http://dev.mysql.com/doc/refman/5.0/en/select.html

  

可以使用AS alias_name为select_expr指定别名。别名是   用作表达式的列名,可以在GROUP BY中使用,   ORDER BYHAVING条款。例如:

SELECT CONCAT(last_name,', ',first_name) AS full_name   FROM mytable
ORDER BY full_name;
     

将select_expr别名化时,AS关键字是可选的   标识符。前面的例子可能是这样写的:

SELECT CONCAT(last_name,', ',first_name) full_name   FROM mytable
ORDER BY full_name;
     

但是,由于AS是可选的,如果您可能会出现一个微妙的问题   忘记两个select_expr表达式之间的逗号:MySQL解释   第二个作为别名。例如,在以下声明中,   columnb被视为别名:

SELECT columna columnb FROM mytable;
     

因此,习惯使用AS是一种好习惯   明确指定列别名时。

     

不允许在WHERE子句中引用列别名,   因为WHERE时可能尚未确定列值   子句被执行。请参见第C.5.5.4节“列的问题   别名”。

这对于表格来说也非常相似:

  

可以使用tbl_name AS alias_name或表别名表参考   tbl_name alias_name:

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的答案)我不认为如果没有软件版本的完整描述,正在运行的查询和收到的错误消息,你无法判断。