安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Mysql的查询

8月4日 相见欢投稿
  出现在select语句中的select语句,称为子查询或内查询。
  外部的select查询语句,称为主查询或外查询。子查询分类按结果集的行列数不同分为4种标量子查询(结果集只有一行一列)列子查询(结果集只有一列多行)行的查询(结果集有一行多列)表子查询(结果集一般为多行多列)按子查询出现在主查询中的不同位置分select后面:仅仅支持标量子查询。from后面:支持表子查询。where或having后面:支持标量子查询(单列单行)、列子查询(单列多行)、行子查询(多列多行)exists后面(即相关子查询):表子查询(多行、多列)准备测试数据
  测试数据比较多,放在我的个人博客上了。
  浏览器中打开链接:http:www。itsoku。comarticle196
  mysql中执行里面的javacode2018employees库部分的脚本。
  成功创建javacode2018employees库及5张表,如下:
  表名
  描述
  departments
  部门表
  employees
  员工信息表
  jobs
  职位信息表
  locations
  位置表(部门表中会用到)
  jobgrades
  薪资等级表select后面的子查询
  子查询位于select后面的,仅仅支持标量子查询。示例1
  查询每个部门员工的个数SELECTa。,(SELECTcount()FROMemployeesbWHEREb。departmentida。departmentid)AS员工个数FROM示例2
  查询员工号102个部门名称SELECT(SELECTa。departmentnameFROMdepartmentsa,employeesbWHEREa。departmentidb。departmentidANDb。employeeid102)AS部门名;from后面的子查询将自己查询的结果集充当一张表,要求必须起别名,否则这个表找不到。
  然后将真实地表格和自己查询结果表进行连接查询。示例1
  查询每个部门平均工资的工资等级查询每个部门平均工资SELECTdepartmentid,avg(a。salary)FROMemployeesaGROUPBYa。薪资等级表SELECTFROM将上面2个结果连接查询,筛选条件:平均工资SELECTt1。departmentid,saAS平均工资,t2。gradelevelFROM(SELECTdepartmentid,avg(a。salary)saFROMemployeesaGROUPBYa。departmentid)t1,jobgradest2WHEREt1。saBETWEENt2。lowestsalANDt2。
  运行最后一条结果如下:mysqlSELECTt1。departmentid,saAS平均工资,t2。gradelevelFROM(SELECTdepartmentid,avg(a。salary)saFROMemployeesaGROUPBYa。departmentid)t1,jobgradest2WHEREt1。saBETWEENt2。lowestsalANDt2。departmentid平均工资gradelevelNULL7000。000000C104400。000000B209500。000000C304150。000000B406500。000000C503475。555556B605760。000000B7010000。000000D808955。882353C9019333。333333E1008600。000000C11010150。000000D12rowsinset(0。00sec)where和having后面的子查询where或having后面,可以使用标量子查询(单行单列子查询)列子查询(单列多行子查询)行的查询(一行多列)特点子查询放在小括号内。子查询一般放在条件的右侧。标量子查询,一般搭配着单行单列操作符使用、、、、、、!列子查询,一般搭配着多行操作符使用in(notin):列表中的任意一个any或者some:和子查询返回的某一个值比较,比如asome(10,20,30),a大于子查询中任意一个即可,a大于子查询中最小值即可,等同于amin(10,20,30)。all:和子查询返回的所有值比较,比如aall(10,20,30),a大于子查询中所有值,换句话说,a大于子查询中最大值即可满足查询条件,等同于amax(10,20,30);子查询的执行优先于主查询执行,因为主查询的条件用到了子查询的结果。mysql中的in、any、some、all
  in,any,some,all分别是子查询的关键词之一。
  in:in常用于where表达式中,其作用是查询某个范围内的数据
  any和some一样:可以与、、、、、结合起来使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的任何一个数据。
  all:可以与、、、、、结合使用,分别表示等于、大于、大于等于、小于、小于等于、不等于其中的其中的所有数据。
  下文中会经常用到这些关键字。标量子查询一般标量子查询,示例
  查询谁的工资比Abel的高?查询abel的工资【改查询是标量子查询】SELECTsalaryFROMemployeesWHERElastnameA查询员工信息,满足salary的结果SELECTFROMemployeesaWHEREa。salary(SELECTsalaryFROMemployeesWHERElastnameAbel);多个标量子查询,示例
  返回jobid与141号员工相同,salary比143号员工多的员工、姓名、jobid和工资返回jobid与141号员工相同,salary比143号员工多的员工、姓名、jobid和工资查询141号员工的jobidSELECTjobidFROMemployeesWHEREemployeeid141;查询143好员工的salarySELECTsalaryFROMemployeesWHEREemployeeid143;查询员工的姓名、jobid、工资,要求jobidandsalarySELECTa。lastname姓名,a。jobid,a。salary工资FROMemployeesaWHEREa。jobid(SELECTjobidFROMemployeesWHEREemployeeid141)ANDa。salary(SELECTsalaryFROMemployeesWHEREemployeeid143);子查询分组函数,示例
  查询最低工资大于50号部门最低工资的部门id和其最低工资【having】查询最低工资大于50号部门最低工资的部门id和其最低工资【having】查询50号部门的最低工资SELECTmin(salary)FROMemployeesWHEREdepartmentid50;查询每个部门的最低工资SELECTmin(salary),departmentidFROMemployeesGROUPBY在的基础上筛选,满足min(salary)SELECTmin(a。salary)minsalary,departmentidFROMemployeesaGROUPBYa。departmentidHAVINGmin(a。salary)(SELECTmin(salary)FROMemployeesWHEREdepartmentid50);错误的标量子查询,示例
  将上面的示例中子查询语句中的min(salary)改为salary,执行效果如下:mysqlSELECTmin(a。salary)minsalary,departmentidFROMemployeesaGROUPBYa。departmentidHAVINGmin(a。salary)(SELECTsalaryFROMemployeesWHEREdepartmentid500000);ERROR1242(21000):Subqueryreturnsmorethan1row错误提示:自己查询返回的结果超过了1行记录。
  说明:上面的子查询只支持最多一列一行记录。列子查询(子查询结果集一列多行)列子查询需要搭配多行操作符使用:in(notin)、anysome、all。
  为了提升效率,最好去重复一下distinct关键字。示例1
  返回locationid是1400或1700的部门中的所有员工姓名返回locationid是1400或1700的部门中的所有员工姓名方式1查询locationid是1400或1700的部门编号SELECTDISTINCTdepartmentidFROMdepartmentsWHERElocationidIN(1400,1700);查询员工姓名,要求部门是列表中的某一个SELECTa。lastnameFROMemployeesaWHEREa。departmentidIN(SELECTDISTINCTdepartmentidFROMdepartmentsWHERElocationidIN(1400,1700));方式2:使用any实现SELECTa。lastnameFROMemployeesaWHEREa。departmentidANY(SELECTDISTINCTdepartmentidFROMdepartmentsWHERElocationidIN(1400,1700));拓展,下面与notin等价SELECTa。lastnameFROMemployeesaWHEREa。departmentidALL(SELECTDISTINCTdepartmentidFROMdepartmentsWHERElocationidIN(1400,1700));示例2
  返回其他工种中比jobid为’ITPROG’工种任意工资低的员工的员工号、姓名、jobid、salary返回其他工种中比jobid为ITPROG工种任一工资低的员工的员工号、姓名、jobid、salary查询jobid为ITPROG部门任工资SELECTDISTINCTsalaryFROMemployeesWHEREjobidITPROG;查询员工号、姓名、jobid、salary,slary的任意一个SELECTlastname,employeeid,jobid,salaryFROMemployeesWHEREsalaryANY(SELECTDISTINCTsalaryFROMemployeesWHEREjobidITPROG)ANDjobid!ITPROG;或者SELECTlastname,employeeid,jobid,salaryFROMemployeesWHEREsalary(SELECTmax(salary)FROMemployeesWHEREjobidITPROG)ANDjobid!ITPROG;示例3
  返回其他工种中比jobid为’ITPROG’部门所有工资低的员工的员工号、姓名、jobid、salary返回其他工种中比jobid为ITPROG部门所有工资低的员工的员工号、姓名、jobid、salarySELECTlastname,employeeid,jobid,salaryFROMemployeesWHEREsalaryALL(SELECTDISTINCTsalaryFROMemployeesWHEREjobidITPROG)ANDjobid!ITPROG;或者SELECTlastname,employeeid,jobid,salaryFROMemployeesWHEREsalary(SELECTmin(salary)FROMemployeesWHEREjobidITPROG)ANDjobid!ITPROG;行子查询(子查询结果集一行多列)示例
  查询员工编号最小并且工资最高的员工信息,3种方式。查询员工编号最小并且工资最高的员工信息查询最小的员工编号SELECTmin(employeeid)FROM查询最高工资SELECTmax(salary)FROM方式1:查询员工信息SELECTFROMemployeesaWHEREa。employeeid(SELECTmin(employeeid)FROMemployees)ANDsalary(SELECTmax(salary)FROMemployees);方式2SELECTFROMemployeesaWHERE(a。employeeid,a。salary)(SELECTmin(employeeid),max(salary)FROMemployees);方式3SELECTFROMemployeesaWHERE(a。employeeid,a。salary)in(SELECTmin(employeeid),max(salary)FROMemployees);
  方式1比较常见,方式2、3更简洁。exists后面(也叫做相关子查询)语法:exists(完整的查询语句)。exists查询结果:1或0,exists查询的结果用来判断子查询的结果集中是否有值。一般来说,能用exists的子查询,绝对都能用in代替,所以exists用的少。和前面的查询不同,这先执行主查询,然后主查询查询的结果,在根据子查询进行过滤,子查询中涉及到主查询中用到的字段,所以叫相关子查询。示例1
  简单示例mysqlSELECTexists(SELECTemployeeidFROMemployeesWHEREsalary300000)ASexists返回1或者0;exists返回1或者001rowinset(0。00sec)示例2
  查询所有员工的部门名称exists入门案例SELECTexists(SELECTemployeeidFROMemployeesWHEREsalary300000)ASexists返回1或者0;查询所有员工部门名SELECTdepartmentnameFROMdepartmentsaWHEREexists(SELECT1FROMemployeesbWHEREa。departmentidb。departmentid);使用in实现SELECTdepartmentnameFROMdepartmentsaWHEREa。departmentidIN(SELECTdepartmentidFROMemployees);示例3
  查询没有员工的部门查询没有员工的部门exists实现SELECTFROMdepartmentsaWHERENOTexists(SELECT1FROMemployeesbWHEREa。departmentidb。departmentidANDb。departmentidISNOTNULL);in的方式SELECTFROMdepartmentsaWHEREa。departmentidNOTIN(SELECTdepartmentidFROMemployeesbWHEREb。departmentidISNOTNULL);
  上面脚本中有b。departmentidISNOTNULL,为什么,有大坑,向下看。NULL的大坑示例1
  使用notin的方式查询没有员工的部门,如下:SELECTFROMdepartmentsaWHEREa。departmentidNOTIN(SELECTdepartmentidFROMemployeesb);
  运行结果:mysqlSELECTFROMdepartmentsaWHEREa。departmentidNOTIN(SELECTdepartmentidFROMemployeesb);Emptyset(0。00sec)
  notin的情况下,子查询中列的值为NULL的时候,外查询的结果为空。
  建议:建表是,列不允许为空。
投诉 评论 转载

iPhone13Pro定妆照曝光后摄将大提升官方推送iOS1近期,在国内智能手机品牌一片热闹非凡的场景之下,貌似苹果也渐渐有些坐不住了,关于新一代iphone13系列的消息也是层出不穷。日前,一组所谓iphone13Pro的定妆照曝光,……你现在的手机号用了多久?我很自信的说,我的手机号用了22年了,无论什么政策以及各种套餐的吸引,我心永恒,没有动摇我的意志力。这一点我很佩服自己。感觉经常换号,会造成很多不方便,许多朋友,客……神推荐西瓜导航你值得拥有西瓜导航(xgnav。com)是国内专业的网址导航和网站导航网站,汇集全网优质网址和资源,为你提供站长资源、二次元、服务器、wordpress、设计师、区块链、产品经理、程序员……Mysql的查询出现在select语句中的select语句,称为子查询或内查询。外部的select查询语句,称为主查询或外查询。子查询分类按结果集的行列数不同分为4种标量子查询(结果集只……iPhone信号弱或将彻底解决果粉之家,专业苹果手机技术研究十年!您身边的苹果专家关于iPhone信号问题,一直以来都是果粉关注的重点。为了彻底解决该问题,近几年苹果不惜下血本收购了英特尔5G业务,并……金属边框AG玻璃,8GB128GB版跌至639元,外观致敬i苹果近年来发布的iPhone手机,外观基本上没有太大的亮点,很多网友觉得非常丑,不过在手感和配色等方面,做得倒是不错。很多国产机也仿效iPhone手机设计风格,特别是一些百元机……这个函数眼里揉不得一点沙子,精确查询就找它!Excel中的查询操作,不管是用LOOKUP系列函数,还是INDEXMATCH函数组合,都不区分字母的大小写。比如,有如图所示的一张表格,我们要根据编号查找对应的姓名,用LOO……NFT乱象整治拉开帷幕,三协会倡议不投资不为NFT提供集中交华夏时报(www。chinatimes。net。cn)记者王永菲冉学东北京报道对NFT的乱象治理即将拉开帷幕。4月13日,中国互联网金融协会、中国银行业协会、中国证……2022年全球十大科技品牌中国占据4席,华为价值达到4500随着科技的不断发展,人们的生活也迎来了极大的改变。无数的科技公司也展现出来了属于自己的魅力,众所周知美国是一个科技十分发达的国家。所以世界上大多数有名的科技公司都在美国,但是随……中秋直降300元?OPPOReno6二次进化,多方位改进体验OPPOReno6系列手机自从发售在至今以来,在市场的反响颇高,且备受用户和消费者们的青睐。因此,OPPOReno6系列的销量也一直节节高升。但在机型发售后,便有不少用户过官方……ampamp39GalaxyZFold3ampamp39与SSPen、UDC、防水支持、耐用性增强、完整性。。。仍然沉重和厚实是一个挑战它应该被称为平板手机。两年前首次推出可折叠智能手机的三星电子,终于在第三代可折叠智能手机中完成……Airpods3可能于秋季上市,你期待吗近期有消息称,在爆料的消息中有提到Beats新推出的产品BeatsBuds,里面使用的是22纳米的晶片,里面罕见的没有使用苹果自家的H1的晶片,原因是这样可以节省成本以及缩短研……
三星称受益于芯片价格上涨联想被查处愿联想好自为之全球变化与生物化学循环过程研究取得系列进展腾讯报告全真互联分布式云原生等技术将助力金融科技创新当你拥有华为Mate40Pro,还有必要换华为P50Pro吗普通摄影爱好者有必要买单反拍照片吗?A3幅面激光打印机值得推荐的有哪些?国产手机崛起的今天,依然选择iPhone的人,在坚持什么?亚马逊侵权病因自己!泽宝再出大招!广东省培育200个亿级卖家首创首发多项重大原创成果!AI创新将进入北京时间不换卡不换号!今年年底,你也能用卫星信号发短信了顶级投资人眼中,小程序的真正价值在哪里?泌阳今日仔猪价瓜子脸女生适合的发型设计长卷发短烫发尽显时尚气质7月二线豪华品牌销量排名红旗再次夺冠,沃尔沃出现双下滑中央政治局定调,扩大中等收入群体!外媒英特尔选择在德国马格德堡投资新建欧洲芯片工厂沸点的滑板怎么样往事随风韩红歌词人机造句用人机造句大全协议离婚后起诉抚养权的手续怎么办?逗逼室友总是给我意想不到的惊喜第14课ampnbsp从师夷长技到维新变法集体备课关于白落梅的爱情散文欣赏

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利