您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL子查询如何使用

2024/2/21 17:55:20发布16次查看
相关子查询相关子查询执行流程
如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称之为 关联子查询 。在主查询的每一行执行时,相关子查询会按照逐行顺序依次执行。
说明:子查询中使用主查询中的列
题目:查询员工中工资大于本部门平均工资的员工的last_name,salary和其department_id
方式一:相关子查询
在 from 中使用子查询
select last_name,salary,e1.department_idfrom employees e1,(select department_id,avg(salary) dept_avg_sal from employees groupby department_id) e2where e1.`department_id` = e2.department_idand e2.dept_avg_sal < e1.`salary`;
from型的子查询:子查询是作为from的一部分,子查询要用()引起来,并且要给这个子查询取别
名, 把它当成一张“临时的虚拟的表”来使用。
题目:查询员工的id,salary,按照department_name 排序
在order by 中使用子查询:
select employee_id,salaryfrom employees eorder by (select department_namefrom departments dwhere e.`department_id` = d.`department_id`);
exists与not exists关键字关联子查询通常也会和 exists操作符一起来使用,用来检查在子查询中是否存在满足条件的行。
如果在子查询中不存在满足条件的行:
条件返回 false
继续在子查询中查找
如果在子查询中存在满足条件的行:
不在子查询中继续查找
条件返回 true
not exists关键字表示如果不存在某种条件,则返回true,否则返回false。
题目:查询公司管理者的employee_id,last_name,job_id,department_id信息
select employee_id, last_name, job_id, department_idfrom employees e1where exists ( select *from employees e2where e2.manager_id =e1.employee_id);
子查询实际上是通过未知表进行查询后的条件判断,而自连接是通过已知的自身数据表
进行条件判断,因此在大部分 dbms 中都对自连接处理进行了优化。
以上就是mysql子查询如何使用的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product