对于 1) 的答案,mysql 文档http://dev.mysql.com/doc/refman/5.0/en/select.html:
可以使用 AS alias_name 为 select_expr 指定别名。别名用作表达式的列名,可用于GROUP BY
、
ORDER BY
或HAVING
子句。例如:
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) 的答案,我认为如果没有软件版本的完整描述、正在运行的查询和收到的错误消息,您无论如何都无法判断。