「子查詢的 WHERE 條件與外層無關,可獨立理解。」
**錯誤**——相關子查詢中,內層可引用外層欄位,形成逐行求值邏輯。

| 類型 | 特徵 | 執行邏輯 |
|---|---|---|
| 非相關子查詢 | 內層無引用外層欄位 | 先執行內層得結果集,外層用 IN/= 比較 |
| 相關子查詢 | 內層引用外層欄位(如 WHERE inner.col = outer.col) | 外層每行觸發一次內層執行 |
| EXISTS 子查詢 | 只關心是否存在 | 找到第一匹配即停止,常比 IN 快 |
-- 非相關:部門平均薪資
SELECT * FROM emp WHERE sal > (SELECT AVG(sal) FROM emp);
-- 相關:高於自己部門平均薪資
SELECT * FROM emp e1
WHERE sal > (SELECT AVG(sal) FROM emp e2 WHERE e2.deptno = e1.deptno);
-- EXISTS:有下屬的主管
SELECT * FROM emp e1
WHERE EXISTS (SELECT 1 FROM emp e2 WHERE e2.mgr = e1.empno);
e1/e2)明確區分作用域。JOIN 或 WITH (CTE) 提升可讀與效能。