Share via


FROM 句の使用

FROM 句は、テーブルまたはビューからデータを取得している SELECT ステートメントごとに必要です。FROM 句は次の場合に使用します。

  • 選択リストや WHERE 句で参照する列を格納しているテーブルおよびビューをリストする場合。テーブル名やビュー名には AS 句を使用して別名を付けることができます。
  • 型を結合する場合。結合条件は ON 句で指定します。

FROM 句は、テーブル名、ビュー名、および JOIN 句をコンマで区切ったリストです。

Transact-SQL には、テーブルまたはビュー以外のオブジェクトを FROM 句で指定できる拡張機能が備わっています。このようなオブジェクトは結果セット (OLE DB でいう行セット) を返し、仮想テーブルを形成します。SELECT ステートメントは、この結果セットをテーブルと同じように扱います。

FROM 句では次のオブジェクトや操作を指定できます。

  • 1 つ以上のテーブルまたはビュー。次に例を示します。

    SELECT *
    FROM SalesOrderHeader
    
  • 2 つ以上のテーブルまたはビューの結合。次に例を示します。

    SELECT Cst.CustomerID, St.Name, Ord.ShipDate, Ord.Freight 
    FROM AdventureWorks.Sales.Store AS St
    JOIN AdventureWorks.Sales.Customer AS Cst
    ON St.CustomerID = Cst.CustomerID
    JOIN AdventureWorks.Sales.SalesOrderHeader AS Ord
    ON Cst.CustomerID = Ord.CustomerID
    
  • FROM 句内の SELECT ステートメントにより、別名またはユーザー指定の名前で参照されている 1 つ以上の派生テーブル。FROM 句内にある SELECT の結果セットは、外部 SELECT ステートメントで使用されるテーブルを形成します。たとえば、次の SELECT は派生テーブルを使用して各従業員が住んでいる市区町村を返します。

    USE AdventureWorks ;
    GO
    SELECT RTRIM(c.FirstName) + ' ' + LTRIM(c.LastName) AS Name,
     d.City
    FROM Person.Contact c
    INNER JOIN HumanResources.Employee e ON c.ContactID = e.ContactID 
    INNER JOIN (SELECT AddressID, City FROM Person.Address) AS d
    ON e.AddressID = d.AddressID
    ORDER BY c.LastName, c.FirstName ;
    
  • APPLY 演算子。FROM 句では、結合に加えて APPLY 演算子を指定できます。これにより、右辺の入力 (通常はテーブル値関数) を左辺の入力の各行に対して評価し、すべての評価の結果をマージできます。詳細については、「APPLY の使用」を参照してください。

  • PIVOT 演算子と UNPIVOT 演算子。これらの演算子は、入力テーブルの形状を変更するために FROM 句で使用できます。PIVOT 演算子の出力では、入力の列の値に基づいて、新しい列が生成されます。詳細については、「PIVOT と UNPIVOT の使用」を参照してください。

  • sp_addlinkedserver を使用して定義されているリンク サーバー上の 1 つ以上のテーブルまたはビュー。リンク サーバーには、任意の OLE DB データ ソースを指定できます。

  • OPENROWSET 関数または OPENQUERY 関数のいずれかから返される OLE DB 行セット。

Microsoft SQL Server 2005 分散クエリの基礎は、リンク サーバー、OPENROWSET、および OPENQUERY です。これらにより、Transact-SQL ステートメントの一部として、任意の OLE DB データ ソースのデータに対するクエリまたは変更を実行することが可能になります。

FROM 句を使用しない SELECT ステートメント

データベース内のテーブルからのデータを選択していない SELECT ステートメントの場合、FROM 句は不要です。このような SELECT ステートメントは、列に対する操作を行わないローカル変数または Transact-SQL 関数からのデータ選択のみを実行します。次に例を示します。

SELECT @MyIntVariable
SELECT @@VERSION
SELECT DB_ID('AdventureWorks')

参照

概念

分散クエリ
結合の使用

その他の技術情報

OPENQUERY (Transact-SQL)
FROM (Transact-SQL)
OPENROWSET (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手