表副問合せ

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

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

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)