电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

MySql中子查詢內(nèi)查詢示例詳解

瀏覽:3日期:2023-10-13 18:28:03

西北望鄉(xiāng)何處是,東南見月幾回圓。

月亮又慢悠悠的掛上了天空,趁著睡前夢(mèng)囈,我就帶領(lǐng)各位可愛的讀者們探索MySql最后的子查詢部分。

說明:有些查詢結(jié)果出來結(jié)果截圖與題目要求不一樣會(huì)出現(xiàn)多余的字段是為了方便展示結(jié)果的可讀性。實(shí)際操作的讀者可以刪除SELECT后面多余的字段得到正確的結(jié)果。

#WHERE或HAVING后面#1.標(biāo)量子查詢(單行子查詢)#2.列子查詢(多行子查詢)#3.行子查詢(多列多行)#特點(diǎn):# ①子查詢放在小括號(hào)內(nèi)# ②子查詢一般放在條件的右側(cè)# ③標(biāo)量子查詢:一般搭配著單行操作符使用# 單行操作符: > < >= <= <> !-# 列子查詢,一般搭配著多行操作符使用# IN,ANY/SOME(任意),ALL# ④子查詢的執(zhí)行優(yōu)先與主查詢執(zhí)行,主查詢的條件用到了子查詢的結(jié)果。

#1.標(biāo)量子查詢#案例1:誰的工資比Abel高?#①查詢Abel的工資SELECT salaryFROM employeesWHERE last_name = ’Abel’;

MySql中子查詢內(nèi)查詢示例詳解

#②查詢員工的信息,滿足Salary>①結(jié)果SELECT *FROM employeesWHERE salary>(SELECT salary FROM employees WHERE last_name=’Abel’);

MySql中子查詢內(nèi)查詢示例詳解

#案例2.返回job_id與141號(hào)員工相同,salary比143號(hào)員工多的員工姓名,job_id,工資。#①查141員工的job_idSELECT job_idFROM employeesWHERE employee_id=’141’;

MySql中子查詢內(nèi)查詢示例詳解

#②查143員工的salarySELECT salaryFROM employeesWHERE employee_id=’143’;

MySql中子查詢內(nèi)查詢示例詳解

#③最后合并結(jié)果SELECT CONCAT(last_name,first_name) AS 姓名,job_id AS 工種編號(hào),salary AS 工資FROM employeesWHERE job_id=( SELECT job_id FROM employees WHERE employee_id=’141’)AND salary>( SELECT salary FROM employees WHERE employee_id=’143’);

MySql中子查詢內(nèi)查詢示例詳解

#案例3.返回公司工資最少的員工的last_name,job_id和salary。SELECT MIN(salary)FROM employees;

MySql中子查詢內(nèi)查詢示例詳解

SELECTlast_name AS 姓,salary AS 工資,job_id AS 工種編號(hào)FROM employeesWHERE salary=( SELECT MIN(salary) FROM employees );

MySql中子查詢內(nèi)查詢示例詳解

#案例4.查詢最低工資大于50號(hào)部門最低工資的部門id和其最低工資。#①查50部門的最低工資SELECT MIN(salary)FROM employeesWHERE department_id=50;

MySql中子查詢內(nèi)查詢示例詳解

#分組后,篩選條件①.【不用排除沒有部門的所以不篩選部門編號(hào)】SELECT department_id AS 部門編號(hào),MIN(salary) AS 月薪FROM employees#WHERE department_idGROUP BY department_idHAVING 月薪>( SELECT MIN(salary) FROM employees );

MySql中子查詢內(nèi)查詢示例詳解

#2.列子查詢(多行子查詢)#返回多行#使用多行比較操作符

MySql中子查詢內(nèi)查詢示例詳解

#案例1.返回location_id是1400或1700的部門中的所有員工姓名。#①查詢location_id是1400或1700的部門編號(hào)SELECT DISTINCT department_idFROM departmentsWHERE location_id IN(1400,1700);

MySql中子查詢內(nèi)查詢示例詳解

#②查詢員工姓名,要求部門號(hào)是①列表的某一個(gè)SELECT CONCAT(last_name,first_name) AS 姓名FROM employeesWHERE department_id IN ( SELECT DISTINCT department_id FROM departments WHERE location_id IN(1400,1700) );

MySql中子查詢內(nèi)查詢示例詳解

用ANY替代IN與上面同樣的結(jié)果SELECT CONCAT(last_name,first_name) AS 姓名FROM employeesWHERE department_id = ANY( SELECT DISTINCT department_id FROM departments WHERE location_id IN(1400,1700) );

#案例.返回location_id不是1400或1700的部門中的所有員工姓名。SELECT CONCAT(last_name,first_name) AS 姓名FROM employeesWHERE department_id NOT IN( SELECT DISTINCT department_id FROM departments WHERE location_id IN(1400,1700));==============================SELECT CONCAT(last_name,first_name) AS 姓名FROM employeesWHERE department_id <> ALL( SELECT DISTINCT department_id FROM departments WHERE location_id IN(1400,1700));

MySql中子查詢內(nèi)查詢示例詳解

#案例2.返回其他工種中比job_id為IT_PROG部門任意一工資低的員工工號(hào),# 姓名,job_id以及salary#①把IT_PROG部門中的工資查出來SELECT DISTINCT salaryFROM employeesWHERE job_id=’IT_PROG’;

MySql中子查詢內(nèi)查詢示例詳解

#②把不是IT_PROG部門信息查出來SELECT *FROM employeesWHERE job_id != ’IT_PROG’;

MySql中子查詢內(nèi)查詢示例詳解

#③合并①與②在員工表中查出來SELECT employee_id AS 員工編號(hào),CONCAT(last_name,first_name) AS 姓名,job_id AS 工種編號(hào),salary AS 工資FROM employeesWHERE job_id != ’IT_PROG’AND salary<ANY( SELECT salary FROM employees WHERE job_id=’IT_PROG’ );

MySql中子查詢內(nèi)查詢示例詳解

用MAX代替ANY與上面同樣的效果SELECT employee_id AS 員工編號(hào),CONCAT(last_name,first_name) AS 姓名,job_id AS 工種編號(hào),salary AS 工資FROM employeesWHERE job_id <> ’IT_PROG’AND salary<( SELECT MAX(salary) FROM employees WHERE job_id=’IT_PROG’ );

#案例3.返回其他部門中比job_id為‘IT_PROG’部門所有工資都低的員工#的員工號(hào),姓名,job_id以及salary。#①先把IT_PROG部門的工資查出來。SELECT DISTINCT salaryFROM employeesWHERE job_id=’IT_PROG’;

MySql中子查詢內(nèi)查詢示例詳解

SELECT employee_id AS 員工號(hào),CONCAT(last_name,first_name) AS 姓名,job_id AS 工種編號(hào),salary AS 工資FROM employeesWHERE salary<ALL( SELECT DISTINCT salary FROM employees WHERE job_id=’IT_PROG’) AND job_id <> ’IT_PROG’;=============================MIN替代ALLSELECT employee_id AS 員工號(hào),CONCAT(last_name,first_name) AS 姓名,job_id AS 工種編號(hào),salary AS 工資FROM employeesWHERE salary<(SELECT MIN(salary)FROM employeesWHERE job_id=’IT_PROG’) AND job_id <> ’IT_PROG’;

MySql中子查詢內(nèi)查詢示例詳解

#3.行子查詢(結(jié)果集一行多列或者多行多列)#案例1.查詢員工編號(hào)最小并且工資最高的員工信息.引入SELECT MIN(employee_id)FROM employees;=================SELECT MAX(salary)FROM employees;

MySql中子查詢內(nèi)查詢示例詳解

SELECT *FROM employeesWHERE employee_id = ( SELECT MIN(employee_id) FROM employees)AND salary = ( SELECT MAX(salary) FROM employees );

MySql中子查詢內(nèi)查詢示例詳解

這種查詢結(jié)果使用虛擬字段,單行操作符必須一致可以使用。查出來與上面同樣的效果。SELECT *FROM employeesWHERE (employee_id,salary)=( SELECT MIN(employee_id), MAX(salary) FROM employees );

#二.SELECT子查詢#僅僅支持標(biāo)量子查詢,結(jié)果是一行一列#案例1.查詢每個(gè)部門的員工個(gè)數(shù)SELECT d.*,(SELECT COUNT(*) FROM employees)FROM departments d;

MySql中子查詢內(nèi)查詢示例詳解

添加條件SELECT d.*,(SELECT COUNT(*)FROM employees eWHERE e.department_id=d.department_id) AS 個(gè)數(shù)FROM departments d;

MySql中子查詢內(nèi)查詢示例詳解

#案例2.查詢員工號(hào)=102的部門名。SELECT department_nameFROM departments;==============SELECT employee_idFROM employeesWHERE employee_id = 102;

MySql中子查詢內(nèi)查詢示例詳解

SELECT employee_id,( SELECT department_name FROM departments d WHERE e.department_id=d.department_id)FROM employees eWHERE employee_id=102;

MySql中子查詢內(nèi)查詢示例詳解

#三.FROM 后面注意:將子查詢結(jié)果充當(dāng)一張表,要求必須起別名#案例:查詢每個(gè)部門的平均工資等級(jí)。SELECT ROUND(AVG(salary),2),department_idFROM employeesGROUP BY department_id;

MySql中子查詢內(nèi)查詢示例詳解

SELECT e.平均工資,j.grade_levelFROM job_grades AS j,(SELECT ROUND(AVG(salary),2) AS 平均工資,department_id FROM employees GROUP BY department_id) AS eWHERE e.平均工資 BETWEEN j.lowest_sal AND j.highest_sal;

#1999語法,老師答案SELECT e.*,j.grade_levelFROM (SELECT ROUND(AVG(salary),2) AS 平均工資,department_idFROM employeesGROUP BY department_id) AS eINNER JOIN job_grades jON e.平均工資 BETWEEN j.lowest_sal AND j.highest_sal;

MySql中子查詢內(nèi)查詢示例詳解

#四.EXISTS后面(相關(guān)子查詢)語法:EXISTS(完整的查詢語句)備注:完整的查詢語句可以是一行一列,可以使一行多列注意:先走外查詢,然后根據(jù)某個(gè)字段的值再去過濾EXISTS 判斷(布爾類型)值存不存在,結(jié)果只有兩種:1有,0沒有#引入SELECT EXISTS(SELECT employee_id FROM employees);

MySql中子查詢內(nèi)查詢示例詳解

查詢工資3W的員工信息SELECT EXISTS(SELECT * FROM employees WHERE salary=30000);

MySql中子查詢內(nèi)查詢示例詳解

#案例引入.查詢員工名和部門名#查員工名與部門編號(hào)SELECT first_name,department_idFROM employeesWHERE department_id;

MySql中子查詢內(nèi)查詢示例詳解

#查部門名SELECT department_nameFROM departments;

MySql中子查詢內(nèi)查詢示例詳解

#查員工名與部門名SELECT e.first_name,d.department_nameFROM employees eINNER JOIN ( SELECT department_name,department_id FROM departments) AS dON e.department_id=d.department_id;

MySql中子查詢內(nèi)查詢示例詳解

#案例1..查有員工的部門名SELECT department_nameFROM departments dWHERE EXISTS( SELECT * FROM employees e WHERE d.department_id=e.department_id );

MySql中子查詢內(nèi)查詢示例詳解

使用IN代替EXISTS,同樣是上面的結(jié)果SELECT department_nameFROM departments dWHERE d.department_id IN( SELECT department_id FROM employees );

#案例2.查詢沒有女朋友的男神信息#IN方法SELECT *FROM boys boWHERE bo.id NOT IN( SELECT boyfriend_id FROM beauty be);===============#EXISTS方法SELECT *FROM boys boWHERE NOT EXISTS( SELECT boyfriend_id FROM beauty be WHERE bo.id=be.boyfriend_id);

MySql中子查詢內(nèi)查詢示例詳解

進(jìn)階9:聯(lián)合查詢UNION 聯(lián)合 合并:將多條查詢語句的結(jié)果合并成一個(gè)結(jié)果。語法: 查詢語句1 UNION 查詢語句2 UNION ...應(yīng)用場(chǎng)景:要查詢的結(jié)果來自于多個(gè)表,且多個(gè)表沒有直接的連接關(guān)系,但查詢信息一致時(shí)。網(wǎng)頁搜索內(nèi)容,內(nèi)容從不同的表中檢索聯(lián)合起來返回給用戶。特點(diǎn):1.要求多條查詢語句的查詢列數(shù)是一致的。2.要求多條查詢語句的查詢的每一列的類型和順序最好一致。3.使用UNION關(guān)鍵字默認(rèn)去重,如果使用UNION ALL全部展示,包含重復(fù)項(xiàng)

MySql中子查詢內(nèi)查詢示例詳解

感謝能認(rèn)真讀到這里的伙伴們,MySql查詢部分結(jié)束,相信屏幕前的你照著我博客里的模板可以完成一些簡(jiǎn)單的SQL查詢語句,SQL既然學(xué)了,以后還是要多練習(xí)一下,SQL1992與1999語法在主流的關(guān)系型數(shù)據(jù)庫(kù)都是通用的。后續(xù)我會(huì)繼續(xù)進(jìn)行對(duì)MySql的知識(shí)進(jìn)行擴(kuò)展,感興趣的同志互相關(guān)注一唄!o(^?^)o

到此這篇關(guān)于MySql中子查詢內(nèi)查詢示例詳解的文章就介紹到這了,更多相關(guān)MySql 子查詢內(nèi)查詢內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 代做标书-代写标书-专业标书文件编辑-「深圳卓越创兴公司」 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 北京中创汇安科贸有限公司 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 合肥宠物店装修_合肥宠物美容院装修_合肥宠物医院设计装修公司-安徽盛世和居装饰 | 压装机-卧式轴承轮轴数控伺服压装机厂家[铭泽机械] | 范秘书_懂你的范文小秘书| 新疆系统集成_新疆系统集成公司_系统集成项目-新疆利成科技 | 密集柜_档案密集柜_智能密集架_密集柜厂家_密集架价格-智英伟业 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 隆众资讯-首页_大宗商品资讯_价格走势_市场行情| 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 山东柳店新能源科技有限公司| 振动传感器,检波器-威海广达勘探仪器有限公司 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 德国BOSCH电磁阀-德国HERION电磁阀-JOUCOMATIC电磁阀|乾拓百科 | 首页_欧瑞传动官方网站--主营变频器、伺服系统、新能源、软起动器、PLC、HMI | 电销卡_稳定企业大语音卡-归属地可选-世纪通信 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 亚克隆,RNAi干扰检测,miRNA定量检测-上海基屹生物科技有限公司 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 中央空调维修、中央空调保养、螺杆压缩机维修-苏州东菱空调 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | 单锥双螺旋混合机_双螺旋锥形混合机-无锡新洋设备科技有限公司 | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 注塑_注塑加工_注塑模具_塑胶模具_注塑加工厂家_深圳环科 | 恒温油槽-恒温水槽-低温恒温槽厂家-宁波科麦仪器有限公司 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 |