實際開發中往往資料來自不同的表,所以需要多表查詢。下面以乙個簡單的公司管理系統,有三張表emp,dept,salgrade來演示如何進行多表查詢。
舉例:1.顯示雇員名,雇員工資以及所在部門的名稱。
因為要查詢的資料來自兩個表,所以叫做多表查詢。
select emp.ename,emp.sal,dept.dname from emp,dept where emp.deptno=dept.deptno;
2.顯示部門號為10的部門名,員工名和工資
select dept.dname,emp.ename,emp.sal from emp,dept where dept.deptno=emp.deptno;
實質:把一張表看成兩張表進行多表查詢處理
可以自連線查詢一定可以進行子查詢;
舉例:1.顯示員工ford的上級領導的編號和姓名
使用子查詢 (巢狀)
使用多表查詢(自查詢):乙個表看做是兩個表 直接查詢
子查詢是指嵌入到其他查詢語句的select語句,也叫巢狀查詢
1、單行子查詢
單行子查詢是指子查詢只返回單列,單行資料;
舉例:顯示smith同一部門的員工
select *from emp where deptno=(select deptno from emp where name='smith');
2、多行子查詢多行子查詢是指返回單列多行資料
(1)in關鍵字,查詢和10號部門的工作相同的雇員的名字,崗位,工資,部門號,但是不包含10自己的
(2)all關鍵字,顯示工資比部門30的所有員工的工資高的員工的姓名、工資和部門號
(3)any關鍵字,同樣顯示工資比部門30的所有員工的工資高的員工的姓名、工資和部門號
all與any關鍵字的區別是,any表示只要在其中找到乙個滿足條件的即可,all表示要滿足所有的條件。
3、多列子查詢
單行子查詢和多行子查詢都是針對單列而言的,而多列子查詢
則是指查詢返回多個列資料
的子查詢語句
舉例:查詢和smith的部門和崗位完全相同的所有雇員,不含smith本人
4、在from子句中使用子查詢
子查詢語句出現在from子句中。這裡要用到資料查詢的技巧,把乙個子查詢當做乙個臨時表使用。
舉例:顯示高於自己部門平均工資的員工的資訊
5、合併查詢
在實際應用中,為了合併多個select的執行結果,可以使用集合操作符 union,union all
(1)union:該操作符用於取得兩個結果集的並集。當使用該操作符時,會自動去掉結果集中的重複行
舉例:將工資大於2500和職位是manager的人找出來
(2)union all:該操作符用於取得兩個結果集的並集。當使用該操作符時,不會去掉結果集中的重複行
mysql 復合查詢
mysql 的復合查詢或者巢狀查詢,有表兩張,要以 clrtheme 表兩張為表列,將 clrcolor 橫向列出,故選擇巢狀查詢。mysql 復合巢狀查詢命令如下 select from clrtheme as t1,select from clrcolor where sort 0 as c1,...
MySQL筆記 復合查詢 內外連線
集合查詢 子查詢 單行子查詢 select from emp where deptno select deptno from emp where ename smith 多行子查詢 in 查詢和10號部門的工作相同的雇員的名字,崗位,工資,部門號,但是不包含10自己的 select ename,jo...
MongoDB 復合查詢
復合查詢 and 並且 當查詢條件為多個欄位時,就會需要使用多欄位復合條件查詢。在查詢條件中指定多個字段條件,檢索出所有滿足條件的文件資料。eg 查詢person集合中年齡 age 大於30歲,並且名字 name 為 lucy 的資料。db.person.find 復合查詢 or 或 當有多個查詢條...