当前位置:   article > 正文

MySQL专题五——子查询_mysql中子查询与主查询执行的顺序

mysql中子查询与主查询执行的顺序

子查询

举例

查找出工资比Abel高的员工名字和工资

方式一 多次查询

SELECT salary `salary_abel` FROM employees WHERE last_name = 'Abel';
SELECT last_name, salary FROM employees WHERE salary > salary_abel;
  • 1
  • 2

方式二 自连接

SELECT e2.last_name, e2.salary FROM employees e1 , employees e2 WHERE e2.salary > e1.salary AND e1.last_name = 'Abel';
  • 1

方式三 子查询

SELECT last_name,salary FROM employees WHERE salary > (
	SELECT salary FROM employees WHERE last_name = 'Abel'
);
  • 1
  • 2
  • 3

子查询

规范称谓

外查询(或主查询)/ 内查询(或子查询)

子查询的使用

子查询 在主查询之前执行

子查询的结果被主查询(外查询)使用

注意事项

  • 子查询要包含在括号内
  • 将子查询放在比较条件的右侧(保证可读性和美观性)
  • 单行操作符对应单行子查询,多行操作符对应多行子查询

子查询的分类

角度一单行子查询 VS 多行子查询

按照内查询的结果返回一条还是多条记录,将子查询分为 单行子查询多行子查询

角度二相关(或关联)子查询不相关(或非关联)子查询

按照内查询是否被执行多次,将子查询分为 相关(或关联)子查询 和 不相关(或非关联)子查询

比如:相关子查询的需求:查询工资大于本部门平均工资的员工信息(外查询和内查询具有关联性,内查询执行次数和外查询相关)

不相关子查询的需求:查询工资大于本公司平均工资的员工信息(外查询和内查询不具备关联性,一次执行内查询即可完成所有外查询)

单行子查询

单行操作符

= != > >= < <=

题目

查询与141号员工 manager_id和department_id相同的其他员工的 employee_id, manager_id, department_id

分析:与141号相同的 manager_id , department_id ;其他员工;

答案:

方式1:

SELECT employee_id, manager_Id, department_id FROM employees 
WHERE 
manager_id = (S
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/392881
推荐阅读
相关标签
  

闽ICP备14008679号