SELECT .. SELECT/ja

From SQLZOO
Jump to navigation Jump to search
Language:Project:Language policy English  • 日本語

サブクエリ テーブル、導出テーブル、ネストしたクエリ

あるクエリの実行結果を別のクエリの中で利用できる。

FROM とサブクエリ

SELECT 文を FROM の行で使用できる。

次の場合、導出テーブル Xnamegdp_per_capita のフィールドを持つ。 内側の SELECT で求められた値は、外側の SELECT で使われる。

SELECT name, ROUND(gdp_per_capita)
  FROM
  (SELECT name,
          gdp/population AS gdp_per_capita
     FROM bbc) X
 WHERE gdp_per_capita>20000

注意)

  • 内部の表は別名 X が与えられている。
  • 内側のクエリの一つ目のフィールド名は元の名前 name のまま。
  • 内側のクエリの二つ目のフィールド名は別名 gdp_per_capita を与えられている。

IN とサブクエリ

ブータンBhutanと同じ地域region にある国を見つける

SELECT 文を WHERE の行で使うことが出来る。この例では、サブクエリの結果は地域regions のリスト(複数値)になる場合がある。

SELECT name
  FROM bbc
 WHERE region IN
  (SELECT region FROM bbc
    WHERE name='Bhutan')

相関サブクエリ

外側のクエリの値が内側のクエリに現れている場合、それは 相関サブクエリ である。

ある国の人口がその国の地域の人口の平均値の5倍を超える人口の国を表示する

SELECT name
  FROM bbc b1
 WHERE population> 
  5*(SELECT AVG(population) FROM bbc
     WHERE region=b1.region)


次を参照: