2016-12-07 21 views
2

私はこのスレッドを見た:サブクエリの最後に "AS"句を入れる必要があるのはなぜですか?

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

私が削除した場合は私にエラーを返す行「tと」。しかし、私はそれを元気に戻します。 これは一時的なので、なぜそのサブテーブルに名前を付ける必要がありますか?その意味はありますか? ありがとうございます。

+1

ネストされたサブクエリには、データを取得するためにエイリアスが必要です。 –

+1

あなたはどのデータベースシステムを使用していますか? SQL Serverでは、サブクエリの名前をシステムに伝える必要があります。必ずしも「AS」を持つ必要はありませんが、それはちょうど「t」になることができますが、名前を付ける必要があります。 –

+0

'AS table-alias'部分は、ANSI/ISO SQL標準に従ってオプションです。しかし、一部の製品ではそれが必要です。 – jarlh

答えて

2

を強制しない派生テーブル(あなたからデータを選択するサブクエリ)は名前が必要です。

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

(ただし、一部のDBMSは標準に準拠していませんが、Oracleでは、派生テーブルにエイリアスを付けることは必須ではありませんが、オプションのASは、指定すると禁止されます。一方、他のDBMSでは、ASが必要になる場合があります。

0

@jarlhは、いくつかのデータベースシステムを使用している場合、ネストされたサブクエリの結果を使用するには、結果セットに名前(またはエイリアス)を付ける必要があります。 paranthesisを閉じた後の名前/文字/文字。

ASキーワードは必須ではありませんが、名前はです。

+1

一部のdbms製品を使用している場合(SQL標準に従ってオプション) – jarlh

0

いいえ、ここでは実際のロジックの必要はありません。例えば
Oracleはそれを標準SQLでは

select * from (select * from dual); 

もSQLiteの

select * from (select 1) 
+0

列があいまいでない限り問題はありません。とにかく、私はそれが決して必要ではないと言っていませんでしたが、OPの例のように必ずしも必ずしも必要というわけではありません。 –

関連する問題