# 表副問合せ

表副問合せは複数の行を返す副問合せです。

スカラー副問合せとは異なり、表副問合せは以下の文脈にてのみ可能です。

- FROM 節の表式
- EXISTSやIN、量の比較

FROM 節の表式にて使われた場合、複数の列を返すことができます。

EXISTSでは、*を使う場合のみ複数の列を返すことができます。

INや限定条件では、単列のみ返すことができます。

#### 構文

    (問合せ)

#### 例

    -- FROM節の表式として、副問合せを使う。
    SELECT VirtualFlightTable.flight_ID
    FROM
        (SELECT flight_ID, orig_airport, dest_airport
        FROM Flights
        WHERE (orig_airport = 'SFO' OR dest_airport = 'SCL') )
    AS VirtualFlightTable
    -- FROM節の表式として、副問合せ(values式)を使う。
    SELECT mycol1
    FROM
        (VALUES (1, 2), (3, 4))
    AS mytable (mycol1, mycol2)
    -- EXISTSにて副問合せを使う
    SELECT *
    FROM Flights
    WHERE EXISTS
        (SELECT * FROM Flights WHERE dest_airport = 'SFO'
        AND orig_airport = 'GRU')
    -- INにて副問合せを使う
    SELECT flight_id, segment_number
    FROM Flights
    WHERE flight_id IN
        (SELECT flight_ID
        FROM Flights WHERE orig_airport = 'SFO'
        OR dest_airport = 'SCL')
    -- 定量比較にて副問合せを使う
    SELECT NAME, COMM
    FROM STAFF
    WHERE COMM >
    (SELECT AVG(BONUS + 800)
         FROM EMPLOYEE
         WHERE COMM < 5000)

親トピック: SQL 問い合わせ