为什么我必须把" AS"子查询结束时的子句。?

时间:2016-12-07 09:40:40

标签: sql subquery

我看到了这个帖子:

SELECT
    MAX(totalcontracts) AS highest_total   
FROM ( SELECT 
        SuperVisor                               
        ,COUNT(ContractNo) AS totalcontracts       
       FROM Contract                                    
       GROUP BY SuperVisor                              
    ) AS t

如果我删除"作为t"返回错误的行。但是,当我把它放回去工作正常。 这是暂时的,所以为什么我要为这个子表格命名?有什么意义吗? 谢谢。

3 个答案:

答案 0 :(得分:3)

在标准SQL中,派生表(从中选择数据的子查询)需要一个名称:

FROM (<subquery>) [AS] <name>`

(但是,某些DBMS不符合标准。例如,在Oracle中,不必为派生表提供别名,但在指定派生表时禁止使用可选AS。其他DBMS on另一方面可能需要AS,尽管SQL标准将其指定为可选。)

答案 1 :(得分:0)

正如@jarlh所提到的,如果您正在使用某些数据库系统,为了使用任何嵌套子查询的结果,您需要为该结果集提供一个名称(或别名),这就是您需要放置一个关闭paranthesis后的名称/字母/字符。

AS关键字不是必需的,但名称为。

答案 2 :(得分:0)

不,这里没有真正的逻辑必然性 例如,Oracle不会强迫它

select * from (select * from dual);

Nor SQLite

select * from (select 1)