在 SQL 中,子查詢(也稱為內聯(lián)視圖或嵌套查詢)是一種在單個查詢中執(zhí)行另一個查詢的方法。子查詢通常用于過濾、計算或從另一個表中獲取數據。子查詢可以放在 SELECT、FROM、WHERE 和 HAVING 子句中。
以下是一些使用子查詢的示例:
SELECT *
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
這個查詢將返回所有薪水高于員工平均薪水的員工。
SELECT department, AVG(salary) as average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > (SELECT AVG(salary) FROM employees);
這個查詢將返回每個部門的平均薪水,但只顯示那些平均薪水高于所有部門平均薪水的部門。
SELECT e1.*
FROM employees e1
JOIN (SELECT department, AVG(salary) as average_salary
FROM employees
GROUP BY department) e2
ON e1.department = e2.department
WHERE e1.salary > e2.average_salary;
這個查詢將返回每個部門的員工薪水,但只顯示那些薪水高于該部門平均薪水的員工。
SELECT *
FROM employees
JOIN departments d ON e.department_id = d.department_id
WHERE d.department_name IN (SELECT department_name FROM departments WHERE department_id != 1);
這個查詢將返回所有部門的員工,但排除部門 ID 為 1 的部門。
這些示例展示了如何在 SQL 查詢中使用子查詢來過濾、計算和關聯(lián)數據。子查詢是一種強大的功能,可以幫助您編寫更復雜的查詢以滿足特定需求。