452

以下が機能しないのはなぜですか?

SELECT name FROM (SELECT name FROM agentinformation)

SQL に対する私の理解は間違っていると思います。

SELECT name FROM agentinformation

内側の select ステートメントは、外側の SELECT ステートメントが照会する結果セットを作成しませんか?

4

2 に答える 2

781

サブクエリをエイリアスする必要があります。

SELECT name FROM (SELECT name FROM agentinformation) a  

またはより明確に

SELECT a.name FROM (SELECT name FROM agentinformation) a  
于 2011-01-07T20:29:24.893 に答える
60

Joe Stefanelli によって提供された答えは、すでに正しいです。

SELECT name FROM (SELECT name FROM agentinformation) as a  

クエリには、サブクエリのエイリアスを作成して取得するテーブル オブジェクトが必要なため、サブクエリのエイリアスを作成する必要があります。概念的には、サブクエリの結果は外側のクエリに代入されます。外側のクエリでテーブル オブジェクトが必要なため、内側のクエリのエイリアスを作成する必要があります。

サブクエリを含むステートメントは、通常、次のいずれかの形式を取ります。

  • WHERE 式 [NOT] IN (サブクエリ)
  • WHERE 式の比較演算子 [ANY | ALL] (サブクエリ)
  • WHERE [NOT] EXISTS (サブクエリ)

その他のサブクエリ ルールサブクエリ タイプを確認します。

ネストされたサブクエリのその他の例。

  1. IN / NOT IN – この演算子は、内側のクエリが実行された後に内側のクエリの出力を取得します。これはゼロ以上の値であり、外側のクエリに送信されます。外側のクエリは、一致する [IN 演算子] 行または一致しない [NOT IN 演算子] 行をすべてフェッチします。

  2. ANY – [>ANY または ANY 演算子は、内部クエリによって生成された値のリストを取得し、リストの最小値より大きい値をすべてフェッチします。の

たとえば >ANY(100,200,300) の場合、ANY 演算子は 100 より大きいすべての値をフェッチします。

  1. ALL – [>ALL または ALL 演算子は、内部クエリによって生成された値のリストを取得し、リストの最大値より大きい値をすべてフェッチします。の

たとえば >ALL(100,200,300) の場合、ALL 演算子は 300 より大きいすべての値をフェッチします。

  1. EXISTS – EXISTS キーワードはブール値 [TRUE/FALSE] を生成します。この EXISTS は、サブクエリによって返された行の存在をチェックします。
于 2016-09-16T17:31:32.830 に答える