サーチ…


備考

副問合せは、外部問合せの異なる句で、またはset操作で使用できます。

それらはかっこ()囲む必要があります。サブクエリの結果が他のものと比較される場合は、列の数が一致する必要があります。テンポラリテーブルに名前を付けるには、FROM句のサブクエリにテーブルエイリアスが必要です。

WHERE句の副問合せ

サブクエリを使用して結果セットをフィルタリングします。たとえば、最高給与従業員に等しい給与を持つすべての従業員を返します。

SELECT *
FROM Employees
WHERE Salary = (SELECT MAX(Salary) FROM Employees)

FROM句の副問い合わせ

FROM句の副問合せは、問合せの実行中に生成された後に失われる一時表と同様に機能します。

SELECT Managers.Id, Employees.Salary
FROM (
  SELECT Id
  FROM Employees
  WHERE ManagerId IS NULL
) AS Managers
JOIN Employees ON Managers.Id = Employees.Id

SELECT句の副問い合わせ

SELECT
  Id, 
  FName, 
  LName,
  (SELECT COUNT(*) FROM Cars WHERE Cars.CustomerId = Customers.Id) AS NumberOfCars
FROM Customers

FROM句のサブクエリ

サブクエリを使用して、一時テーブルを定義し、それを「外部」クエリのFROM句で使用できます。

SELECT * FROM (SELECT city, temp_hi - temp_lo AS temp_var FROM weather) AS w
WHERE temp_var > 20;

上記は、毎日の温度変化が20より大きい天気表から都市を検出します 。結果は次のとおりです。

シティ temp_var
セントルイス 21
ロサンゼルス 31
ロサンゼルス 23
ロサンゼルス 31
ロサンゼルス 27
ロサンゼルス 28
ロサンゼルス 28
ロサンゼルス 32

WHERE句のサブクエリ

次の例では、母集団が平均的な気温を下回る都市( 都市の例 )を検索します(サブqqueryで取得)。

SELECT name, pop2000 FROM cities 
WHERE pop2000 < (SELECT avg(pop2000)  FROM cities);

ここでは、サブクエリ(SELECT avg(pop2000)FROM cities)を使用してWHERE句の条件を指定します。結果は次のとおりです。

ポップ2000
サンフランシスコ 776733
セントルイス 348189
カンザスシティー 146866

SELECT句のサブクエリ

副問合せは、外部問合せのSELECT部分でも使用できます。次のクエリでは、 weatherテーブルのすべての列とcitiesテーブルの対応する状態が示されます

SELECT w.*,  (SELECT c.state FROM cities AS c WHERE c.name = w.city ) AS state 
FROM weather AS w;

異なるテーブルのクエリを使用してクエリ結果をフィルタリングする

このクエリは、スーパーバイザテーブルにないすべての従業員を選択します。

SELECT *
FROM Employees
WHERE EmployeeID not in (SELECT EmployeeID
                            FROM Supervisors)

LEFT JOINを使用しても同じ結果が得られます。

SELECT *
FROM Employees AS e
LEFT JOIN Supervisors AS s ON s.EmployeeID=e.EmployeeID
WHERE s.EmployeeID is NULL

相関サブクエリ

相関関係(SynchronizedまたはCoordinatedとも呼ばれます)サブクエリは、外部クエリの現在の行を参照するネストされたクエリです。

SELECT EmployeeId
    FROM Employee AS eOuter
    WHERE Salary > (
       SELECT AVG(Salary)
       FROM Employee eInner
       WHERE eInner.DepartmentId = eOuter.DepartmentId
    )

副問合せSELECT AVG(Salary) ...は、その外部問合せからEmployeeeOuter参照するため、 相関関係にあります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow