子查詢:查詢中巢狀查詢,稱巢狀巢狀查詢為子查詢
下面要使用的表如下,放在此處便於更好地理解
emp(員工資訊表)
dept(部門表)
例:查詢公司員工工資最高的員工資訊
首先要得到公司員工的最高工資的值
select max(salary) from emp ; -- 假設查詢結果為10000
然後根據上一句sql語句的查詢結果作為條件去查詢員工資訊
select * from emp where emp.salary=10000 ;
使用子查詢的話,一條sql語句就可以完成
select * from emp where emp.salary=(select max(salary) from emp);
例:查詢財務部和市場部所有員工的資訊
首先在部門表查詢財務部和市場部的部門id
select id from dept where name='財務部' or name ='市場部'; --結果為2,3
根據上條sql語句查詢的結果去員工表查詢資訊
select * from emp where dept_id=2 or dept_id=3;
使用子查詢完成上述案例
select * from emp where dept_id in (select id from dept where name in ('財務部','市場部'));
例:查詢員工入職時間在2011-11-11之後的員工資訊和部門資訊
select * from dept t1,(select * from emp where emp.`join_date`>'2011-11-11') t2
where t1.id=t2.dept_id -- t1為dept表的別名,t2為入職日期在2011-11-11之後的員工資訊的虛擬表
多表查詢資料庫
在專案中建立資料庫的時候,我們經常會進行多表查詢。資料庫中建立乙個表應該與乙個實體類相對應。乙個實體物件應該與一條記錄相對應。資料庫是一種結構化的查詢語言,資料庫語言是非過程化的,寫一句就可以執行一句。進行建表的時候,如果是一對多的關係,應該在多的一方建立乙個字段。該字段為少的一方的id。進行建表的...
資料庫多表查詢
笛卡爾積 select from emp,dept select from emp cross join dept 內連線 inner join 內連線把兩個表連線成乙個表 稱為第三個表 在這個表中僅包含那些滿足連線條件的記錄行 select from emp,dept where emp.dept...
資料庫之多表查詢(連線查詢)
一 非等值和等值的多表查詢 select c.catname 圖書類別 b.bookname 書名 b.price from cats c,book b select c.catname 圖書類別 b.bookname 書名 b.price from cats c,book b where c.id...