SELECT .. SELECT/ja

From SQLZOO
Revision as of 15:41, 18 April 2018 by Kobashi.kaz (talk | contribs) (Subquery with IN)
Jump to: navigation, 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')

Correlated Subquery

If a value from the outer query appears in the inner query this is "correlated subquery".

Show the countries where the population is greater than 5 times the average for its region

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


See also: