什么是单行子查询和多行子查询?


单行子查询

当外部查询的结果基于单个未知值时,使用单行子查询。虽然此查询类型正式称为“单行”,但名称暗示查询返回多个列,但仅返回一行结果。但是,单行子查询只能返回一行结果,该结果仅包含一列到外部查询。

在下面的 SELECT 查询中,内部 MySQL 仅返回一行,即公司的最低工资。然后,它使用此值来比较所有员工的工资,并仅显示工资等于最低工资的员工。

SELECT first_name, salary, department_id
FROM employees
WHERE salary = (SELECT MIN (salary)
FROM employees);

当需要根据某些条件限制查询的组结果时,使用 HAVING 子句。如果子查询的结果必须与组函数进行比较,则必须将内部查询嵌套在外部查询的 HAVING 子句中。

SELECT department_id, MIN (salary)
FROM employees
GROUP BY department_id
HAVING MIN (salary) < (SELECT AVG (salary)
FROM employees)

多行子查询

多行子查询是嵌套查询,可以返回多行结果到父查询。多行子查询最常用于 WHERE 和 HAVING 子句中。由于它返回多行,因此必须由集合比较运算符(IN、ALL、ANY)处理。虽然 IN 运算符与前面章节中讨论的含义相同,但 ANY 运算符将指定值与子查询返回的每个值进行比较,而 ALL 将值与子查询返回的每个值进行比较。以下查询将显示错误,因为单行子查询返回多行。

SELECT first_name, department_id FROM employees WHERE department_id = (SELECT department_id FROM employees WHERE LOCATION_ID = 100)

更新于: 2020年6月22日

13K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.