<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
子查詢是指一個查詢語句巢狀在另一個語句內部的查詢
SELECT last_name,salaryFROM employeesWHERE last_name='Abel';SELECT last_name,salaryFROM employeesWHERE salary>11000;
SELECT e2.last_name,e2.salaryFROM employees e1,employees e2WHERE e2.salary>e1.salary AND e1.last_name='Abel';
SELECT last_name,salaryFROM employeesWHERE salary>(SELECT salaryFROM employeesWHERE last_name='Abel');
稱謂的規範:外查詢(或主查詢),內查詢
注意事項
單行子查詢 vs 多行子查詢
相關子查詢vs不相關子查詢
單行比較運運算元
操作符 | 含義 |
---|---|
= | equal to |
> | greater than |
>= | greater than or equal to |
< | less than |
<= | less than or equal to |
<> | not equal to |
SELECT * FROM employees WHERE salary>( SELECT salary FROM employees WHERE employee_id=149 ); SELECT last_name,job_id,salary FROM employees WHERE job_id=( SELECT job_id FROM employees WHERE employee_id=141 ) AND salary >( SELECT salary FROM employees WHERE employee_id=143 ); SELECT employee_id,manager_id,department_id FROM employees WHERE manager_id=( SELECT manager_id FROM employees WHERE employee_id=141 ) AND department_id=( SELECT department_id FROM employees WHERE employee_id=141 ) AND employee_id<>141; SELECT employee_id,manager_id,department_id FROM employees WHERE (manager_id,department_id)=( SELECT manager_id,department_id FROM employees WHERE employee_id=141 ) AND employee_id<>141;
SELECT department_id,MIN(salary) FROM employees GROUP BY department_id HAVING MIN(salary)>( SELECT MIN(salary) FROM employees WHERE department_id=50 );
在CASE表示式中使用單列子查詢
SELECT employee_id,last_name ,CASE department_id WHEN (SELECT department_id FROM departments WHERE location_id=1800) THEN 'Canada' ELSE 'USA' END 'location' FROM employees;
若內查詢查詢結果為空的,則不會報錯,子查詢不會返回任何行
非法使用子查詢
多行子查詢也被稱為集合比較子查詢
內查詢返回多行資料
使用多行比較操作符
操作符 | 含義 |
---|---|
IN | 等於列表中的任意一個 |
ANY | 需要和單行比較操作符一起使用,和子查詢返回的某一個值比較(任一) |
ALL | 需要和單行比較操作符一起使用,和子查詢返回的所有值比較 |
SOME | 實際上是ANY的別名,作用相同,一般常使用ANY |
MySQL中聚合函數是不能巢狀的
SELECT employee_id,last_name FROM employees WHERE salary IN ( SELECT MIN(salary) FROM employees GROUP BY department_id ); SELECT employee_id,last_name,job_id,salary FROM employees WHERE job_id<>'IT_PROG' AND salary < ANY ( SELECT salary FROM employees WHERE job_id='IT_PROG' ); SELECT employee_id,last_name,job_id,salary FROM employees WHERE job_id<>'IT_PROG' AND salary < ALL ( SELECT salary FROM employees WHERE job_id='IT_PROG' ); SELECT department_id FROM employees GROUP BY department_id HAVING AVG(salary) <= ALL ( SELECT AVG(salary) avgsal FROM employees GROUP BY department_id ); SELECT department_id FROM employees GROUP BY department_id HAVING AVG(salary)= ( SELECT MIN(avgsal) FROM ( SELECT AVG(salary) avgsal FROM employees GROUP BY department_id ) dbsal );
多行子查詢空值問題
子查詢中存在空值的情況將使得查詢結果生成的位空
如果子查詢的執行依賴於外部查詢,通常情況下是因為子查詢中的表用到了外部的表,並進行了條件關聯,因此每職系那個一次外部查詢,子查詢都需要重新計算一次,這樣的子查詢便被稱之為關聯子查詢
相關子查詢按照一行接一行的順序執行,主查詢的每一行都執行一次子查詢
SELECT last_name,salary,department_id FROM employees e1 WHERE salary > ( SELECT AVG(salary) FROM employees e2 WHERE department_id=e1.department_id ); #在from中進行子查詢 SELECT e1.last_name,e1.salary,e1.department_id FROM employees e1, ( SELECT department_id ,AVG(salary) avgs FROM employees GROUP BY department_id ) t1 WHERE e1.department_id=t1.depa SELECT employee_id,salary FROM employees e ORDER BY( SELECT department_name FROM departments d WHERE e.department_id=d.department_id ) ASC; SELECT employee_id,last_name,job_id FROM employees e WHERE 2<= ( SELECT COUNT(*) FROM job_history j WHERE e.employee_id=j.employee_id )
結論:在SELECT中,除了GROUP BY和LIMIT之外,其他位置都可以宣告子查詢
關聯子查詢通常也會和EXISTS操作符一起來使用,用來檢查在子查詢中是否存在滿足條件的行
如果在子查詢中不存在滿足條件的行
如果在子查詢中存在滿足條件的行
NOT EXISTS關鍵字表示不存在某種條件,則返回TRUE,否則返回FALSE
到此這篇關於MySQL範例講解子查詢的使用的文章就介紹到這了,更多相關MySQL子查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45