1. 程式人生 > 其它 >子查詢_hehe.employment.over.4.2

子查詢_hehe.employment.over.4.2

技術標籤:# 間接 overjavamysql

4.3 多表查詢_子查詢概述

  • 子查詢:
    • 一個查詢的結果做為另一個查詢的條件
    • 查詢的巢狀,內部的查詢稱為子查詢;
    • 子查詢要使用括號
  • 示例:
-- 查詢工資最高的員工資訊
-- 一條sql就完成這個操作。子查詢
SELECT * FROM emp WHERE emp.`salary` = (SELECT MAX(salary) FROM emp);

4.4 多表查詢_子查詢情況

  • 1.子查詢的結果是單行單列的: 子查詢可以作為條件,使用運算子去判斷。
    • 示例:
-- 查詢員工工資小於平均工資的人
SELECT * FROM emp WHERE emp.
salary < (SELECT AVG(salary) FROM emp);

在這裡插入圖片描述

  • 2.子查詢的結果是多行單列的: 子查詢可以作為條件,使用運算子in來判斷。
    • 示例:
-- 查詢'財務部''市場部'所有的員工資訊,分步查詢
SELECT id FROM dept WHERE NAME = '財務部' OR NAME = '市場部';
SELECT * FROM emp WHERE dept_id = 3 OR dept_id = 2;

-- 子查詢
SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME =
'財務部' OR NAME = '市場部');

在這裡插入圖片描述

  • 3.子查詢的結果是多行多列的: 子查詢可以作為一張虛擬表參與查詢。
    • 示例:
-- 查詢員工入職日期是2011-11-11日之後的員工資訊和部門資訊
SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11'; --作為虛擬表,查詢員工入職日期是2011-11-11日之後的員工資訊

-- 子查詢
SELECT * FROM dept t1 ,(SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11') t2 WHERE t1.id =
t2.dept_id; -- 普通內連線 SELECT * FROM emp t1,dept t2 WHERE t1.`dept_id` = t2.`id` AND t1.`join_date` > '2011-11-11';

在這裡插入圖片描述