子查詢 vs INNER JOIN
很多時候,關聯式子查詢(correlated sub-query) 的查詢結果可以用 INNER JOIN 重現。依需求不同,使用 INNER JOIN 可能更有效率,因為它只需掃描資料一次;相對地,關聯式子查詢 會對外層查詢的每一列各執行一次。
你想找出全世界每個國家中,最大城市在 2017 年的人口數。你可以從 Earthquakes 資料庫取得這些資訊,外層查詢使用 Nations 資料表,子查詢使用 Cities 資料表。
你會先用 關聯式子查詢 建立這個查詢,接著再改寫成使用 INNER JOIN。
本練習屬於課程
改進 SQL Server 中的查詢效能
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
SELECT
n.CountryName,
(SELECT MAX(c.___) -- Add 2017 population column
FROM Cities AS c
-- Outer query country code column
WHERE c.CountryCode = n.___) AS BiggestCity
FROM ___ AS n; -- Outer query table