表副問合せ TableSubquery

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

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

  • 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)