您好,登錄后才能下訂單哦!
當一個查詢結果是另一個查詢的條件的時候,那么就稱為子查詢,子查詢是在SQL語句內的另外一條SELECT語句。
在SELECT、INSERT、UPDATE或DELETE命令中只要是表達式的地方都可以包含子查詢,子查詢甚至可以包含在另外一個子查詢中,以便完成更為復雜的查詢。下面通過一個實例來了解一下子查詢。
實例 查詢部門名稱為RESEARCH的員工信息
在員工表emp中查詢部門名稱(dname)為RESEARCH的員工信息,具體代碼如下。
01 SELECT empno,ename,jobFROM emp
02 WHERE deptno=(SELECT deptno FROM dept
03 WHERE dname='RESEARCH');
通過SQL Developer輸入,查詢結果如圖7.1所示。
圖7.1 顯示部門名稱為RESEARCH的員工信息
因為題目要求查詢的是部門名稱為RESEARCH的員工信息,但是在員工表emp中并沒有部門名稱(dname)字段,只有部門編號(deptno)字段,那么只要知道部門名稱為RESEARCH的編號就可以了,這個要求很簡單,可以通過部門表dept來查詢,代碼如下。
01 select deptno from dept
02 where dname='RESEARCH'
查詢結果如圖7.2所示,通過此語句就可以得到部門編號,為20。
圖7.2 部門名稱為RESEARCH的部門編號
現在題目可以簡化為查詢部門編號為20的員工信息,那么代碼如下。
01 select empno,ename,jobfrom emp
02 where deptno=20;
查詢結果如圖7.1所示。
如果把這兩條查詢語句連起來,就構成了子查詢。如要注意的是,內層查詢稱為子查詢,外層查詢稱為外查詢,如圖7.3所示。
圖7.3 子查詢和外查詢
說明:本實例的需求也可以通過多表關聯查詢來實現,即可以使用如下代碼來替換上面的代碼。將下面的代碼和實例01中的代碼進行對比,可以看出,相比多表關聯查詢,子查詢的使用更加靈活、功能更強大,而且更容易理解。
01 select empno,ename,job
02 from emp join dept on emp.deptno=dept.deptno
03 wheredept.dname = 'RESEARCH';
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。