mysql FROM子句中的单词“AS”是可选的吗?

时间:2011-11-07 00:03:35

标签: mysql syntax

我偶然发现了一个有趣的(对我来说)查询,我不确定它的作用。

SELECT SQL_CALC_FOUND_ROWS DISTINCT P.* FROM table P WHERE P.status = ...

问题在于P具体FROM table P。我知道在FROM子句中你可以使用AS子句,但是这个特定的查询没有。单词AS是否可选?

3 个答案:

答案 0 :(得分:5)

定义别名并不总是可选的,但是当您确定别名时,关键字AS始终是可选的。

table_factor:
    tbl_name [PARTITION (partition_names)] 
        [[AS] alias] [index_hint_list]
  | table_subquery [AS] alias
  | ( table_references )
  | { OJ table_reference LEFT OUTER JOIN table_reference
        ON conditional_expr }

来源:JOIN Syntax

定义列别名时,AS关键字也是可选的:

  

当使用标识符

别名化select_expr时,AS关键字是可选的

来源:SELECT Syntax

答案 1 :(得分:1)

在这种情况下,它不是必需的,但还有其他情况,例如加入派生表,需要它。

答案 2 :(得分:0)

从历史上看,支持有点混合,但它现在是每个人都支持的标准,并且对于名称冲突解决是必不可少的(从具有相同命名字段[s]的多个表中选择)。为复合/计算/虚拟字段赋予别名也非常棒!

在一天结束时,如果它是明确的话,它是“必需的”。