久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql怎么用子查詢檢索數據

156次閱讀
沒有評論

共計 1288 個字符,預計需要花費 4 分鐘才能閱讀完成。

這篇文章主要介紹“mysql 怎么用子查詢檢索數據”,在日常操作中,相信很多人在 mysql 怎么用子查詢檢索數據問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”mysql 怎么用子查詢檢索數據”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

一、相關子查詢

相關子查詢對于外部查詢的每一個值都會有一個結果與其對應,其計算的過程是這樣的:
1、掃描外查詢的第一條記錄
2、掃描子查詢,并將第一條記錄的對應值傳給子查詢,由此計算出子查詢的結果
3、根據子查詢的結果,返回外查詢的結果。
4、重復上述動作,開始掃描外查詢的第二條記錄,第三條記錄,直至全部掃描完畢
例句:

– 查詢本部門最高工資的員工?

– 方法一,使用嵌套子查詢(非關聯子查詢)

select * from emp a where (a.deptno,a.sal) in (select deptno,max(sal) from emp group by deptno);

– 方法二,使用關聯子查詢

select * from emp a where a.sal=(select max(sal) from emp where deptno=a.deptno);

二、EXISTS

exists 是判斷 exits 后面的 sql 語句是否為真, 若為真則整個 sql 句子成立,否則沒有任何記錄。
例句:

SELECT 1 FROM DUAL WHERE EXISTS (SELECT 1 FROM DUAL WHERE 2 = 1);

三、WITH

語法:

SELECT *

 FROM (– 模擬生一個 20 行的數據

 SELECT LEVEL AS lv

 FROM DUAL

 CONNECT BY LEVEL 20) tt

 WHERE tt.lv 10 AND tt.lv 15

WITH TT AS(– 模擬生一個 20 行的數據

 SELECT LEVEL AS lv

 FROM DUAL

 CONNECT BY LEVEL 20)

SELECT lv

 FROM TT

 WHERE lv 10 AND lv 15

WITH tempName AS (SELECT ….)

SELECT …

說明:
可認為在真正進行查詢之前預先構造了一個臨時表 TT,之后便可多次使用它做進一步的分析和處理
優點:
增加了 SQL 的易讀性,如果構造了多個子查詢,結構會更清晰;更重要的是:“一次分析,多次使用”,這也是為什么會提供性能的地方,達到了“少讀”的目標。
例句:

– 普通查詢

SELECT *

 FROM (– 模擬生一個 20 行的數據

 SELECT LEVEL AS lv

 FROM DUAL

 CONNECT BY LEVEL 20) tt

 WHERE tt.lv 10 AND tt.lv

–with 語句

WITH TT AS(– 模擬生一個 20 行的數據

 SELECT LEVEL AS lv

 FROM DUAL

 CONNECT BY LEVEL 20)

SELECT lv

 FROM TT

 WHERE lv 10 AND lv

到此,關于“mysql 怎么用子查詢檢索數據”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計1288字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 翼城县| 新巴尔虎左旗| 神池县| 金川县| 资中县| 井陉县| 益阳市| 桂林市| 香格里拉县| 延吉市| 若尔盖县| 彰化县| 遂宁市| 万宁市| 崇左市| 句容市| 黄大仙区| 尼木县| 新民市| 泸西县| 德惠市| 会理县| 方山县| 崇义县| 永仁县| 伊宁县| 南乐县| 高陵县| 萍乡市| 射洪县| 九龙坡区| 外汇| 友谊县| 尤溪县| 屏南县| 大庆市| 通道| 荣昌县| 平昌县| 钦州市| 石城县|