SELECT 句

SELECT 句

クエリで返される列を指定します。

構文

SELECT [ ALL | DISTINCT ]     [ TOP n [ PERCENT ] [ WITH TIES ] ]     <select_list>

< select_list > ::=

    {    *         | { table_name|view_name|table_alias }.*         |     { column_name|expression | IDENTITYCOL | ROWGUIDCOL }             [ [ AS ] column_alias ]*
*        | column_alias = *expression
*    }    [ ,...n ]

引数

ALL

結果セットに重複した行を含むことを指定します。ALL が既定値です。

DISTINCT

結果セットに一意な行のみを含むことを指定します。NULL 値は、DISTINCT キーワードにおいて等しいと見なされます。

TOP n [PERCENT]

クエリの結果セットの先頭の n 行だけを出力することを指定します。n は 0 ~ 4294967295 の整数です。PERCENT も指定すると、先頭の n % の行だけが結果セットから出力されます。PERCENT を指定した場合、n には 0 ~ 100 の整数を指定する必要があります。

クエリに ORDER BY 句が含まれている場合は、並べ替えられた後で、最初の n 行 (または n %分の行) が出力されます。クエリに ORDER BY 句が含まれていない場合は、任意の順序で行が出力されます。

WITH TIES

ORDER BY のキー列の値が TOP n (PERCENT) の最終行と同じ値を持つ行を、基の結果セットから追加行として返すことを指定します。TOP ...WITH TIES は ORDER BY 句が指定されている場合にのみ使用できます。

<select_list>

結果セットに選択される列です。選択リストは、カンマで区切られた一連の式です。

  • *
    FROM 句内のすべてのテーブルおよびビューの、すべての列を返すことを指定します。列は、FROM 句に指定されているテーブルまたはビューの順に、テーブルまたはビュー内に並んでいる順序で返されます。

  • table_name | view_name | table_alias**.***
    * の有効範囲を指定したテーブルまたはビューに限定します。

  • column_name
    返される列の名前です。FROM 句内の 2 つのテーブルに同じ名前の列がある場合などに参照先が混乱することがないように、column_name を限定します。たとえば、Northwind データベース内の Customers テーブルと Orders テーブルには、共に CustomerID という名前の列があります。クエリの中で 2 つのテーブルを結合する場合、選択リストの中で顧客 ID は Customers.CustomerID として指定できます。

  • expression
    列名、定数、関数、演算子で組み合わせた列名、定数、関数、あるいはサブクエリを指定します。

  • IDENTITYCOL
    ID 列を返します。詳細については、「IDENTITY (プロパティ)」、「ALTER TABLE」、および「CREATE TABLE」を参照してください。

    FROM 句内の複数のテーブルが IDENTITY プロパティを備えた列を持つ場合は、T1.IDENTITYCOL などのように、IDENTITYCOL を指定のテーブル名で限定する必要があります。

  • ROWGUIDCOL
    行の GUID 列を返します。

    FROM 句内の複数のテーブルが ROWGUIDCOL プロパティを持つ場合は、T1.ROWGUIDCOL などのように、ROWGUIDCOL を指定のテーブル名で修飾する必要があります。

  • column_alias
    クエリの結果セット内の列名を置き換える別名です。たとえば、quantity という名前の列に対して、"Quantity"、"Quantity to Date"、または "Qty" などの別名を指定できます。

    別名を使用して、式の結果の名前を指定することもできます。たとえば、以下のようにします。

USE Northwind SELECT AVG(UnitPrice) AS 'Average Price' FROM [Order Details]

*column\_alias* は、ORDER BY 句の中で使用できます。ただし、WHERE 句、GROUP BY 句、または HAVING 句の中では使用できません。クエリ式が DECLARE CURSOR ステートメントに含まれている場合、FOR UPDATE 句の中で *column\_alias* を使用できません。
INTO 句

新しいテーブルを作成し、クエリの結果得られた行をこのテーブルに挿入します。

SELECT ステートメントに INTO 句を指定して実行するユーザーは、対象データベースに対して CREATE TABLE 権限を持っている必要があります。SELECT...INTO は、COMPUTE と共に使用することはできません。詳細については、「」および「」を参照してください。

SELECT...INTO で WHERE 句に FALSE の条件を指定することにより、同一定義でデータのないテーブルを、異なるテーブル名で作成することができます。

構文

[ INTO new_table ]

引数

new_table

選択リストで指定された列および WHERE 句で選択された行を基に作成されるテーブル名を指定します。new_table の形式は、選択リスト内の式の評価で決まります。new_table 内の列は、選択リストの指定順に作成されます。new_table 内の各列の名前、データ型、および値は、選択リスト内の対応する式と同じです。

リストに計算列が指定されている場合、新しいテーブル内の対応する列は計算列にはなりません。新しい列の値は、SELECT...INTO が実行された時点で計算された値を持つ列になります。

このリリースの SQL Server では、select into/bulkcopy データベース オプションは、SELECT INTO を使用してパーマネント テーブルを作成できるかどうかの設定に影響しません。SELECT INTO を含む特定の一括操作のログ記録量は、データベースに対する実質的な復旧モデルによってそれぞれ異なります。詳細については、「」を参照してください。

以前のリリースでは、SELECT INTO を使用してのパーマネント テーブルの作成は、select into/bulkcopy がオンの場合のみ許可されていました。

select into/bulkcopy は、旧バージョンとの互換性を目的として用意されていますが、将来のリリースではサポートされない可能性があります。詳細については、「復旧モデルの使用」、「旧バージョンとの互換性」、および「ALTER DATABASE」を参照してください。

パーマネント テーブルに選択する場合は、SELECT ステートメントを実行する前に sp_dboption を実行して select into/bulkcopy オプションをオンにします。