MySQL復合查詢

2021-08-31 18:45:40 字數 2344 閱讀 6968

實際開發中往往資料來自不同的表,所以需要多表查詢。下面以乙個簡單的公司管理系統,有三張表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 或 當有多個查詢條...