SQL 子查询2024 年 8 月 29 日 | 阅读 6 分钟 子查询或内部查询是嵌套在另一个 SQL 查询中的 SQL 查询。它嵌入在 SQL 语句的 HAVING 或 WHERE 子句中。 以下是 SQL 子查询必须遵循的重要规则 1. SQL 子查询可以与以下语句以及 SQL 表达式运算符一起使用
2. SQL 中的子查询始终用括号括起来,并放在 SQL 运算符的右侧。 3. 我们不能在子查询中使用 ORDER BY 子句。但是,我们可以使用 GROUP BY 子句,它执行与 ORDER BY 子句相同的功能。 4. 如果子查询返回多个记录,我们必须在子查询前使用多值运算符。 5. 我们可以在子查询中使用 BETWEEN 运算符,但不能与子查询一起使用。 带 SELECT 语句的子查询在 SQL 中,内部查询或嵌套查询最常与 SELECT 语句一起使用。带 SELECT 语句的子查询的语法在以下块中描述 带 SELECT 语句的子查询示例 示例 1:此示例将大于比较运算符与子查询一起使用。 我们以名为 Student_Details 的表为例,该表包含 Student_RollNo.、Stu_Name、Stu_Marks 和 Stu_City 列。
以下 SQL 查询返回那些分数大于总平均分数的学生的记录 输出
示例 2:此示例将 IN 运算符与子查询一起使用。 我们以 Faculty_Details 和 Department 这两个表为例。Faculty_Details 表包含教职员工的 ID、姓名、Dept_ID 和地址。而 Department 表包含 Dept_ID、Faculty_ID 和 Dept_Name。
输出
带 INSERT 语句的子查询我们也可以在结构化查询语言的 INSERT 语句中使用子查询和嵌套查询。我们可以将子查询的结果插入到外部查询的表中。带 INSERT 语句的子查询的语法在以下块中描述 带 INSERT 语句的子查询示例示例 1:此示例使用带 WHERE 子句的子查询将一个表中的记录插入到另一个表中。 我们以 Old_Employee 和 New_Employee 表为例。Old_Employee 和 New_Employee 表包含相同数量的列。但是,两个表包含不同的记录。
表:Old_Employee
表:New_Employee New_Employee 包含新员工的详细信息。如果您想将薪资大于 40000 的员工的详细信息从 Old_Employee 表移动到 New_Employee 表。那么对于这个问题,您需要在 SQL 中键入以下查询 现在,您可以使用以下 SELECT 查询检查更新后的 New_Employee 表的详细信息 输出
表:New_Employee 示例 2:此示例描述了如何在 INSERT 语句中使用 ANY 运算符与子查询。 这里我们使用了 New_Employee、old_Employee 和 Department 表。 New_Employee 表的数据如下图所示
表:New_Employee old_Employee 表的数据如下表所示
表:Old_Employee Department 表的数据如下表所示
INSERT INTO New_Employee SELECT * FROM Old_Employee WHERE Emp_ID = ANY( SELECT Emp_ID FROM Department WHERE Dept_ID = 407 OR Dept_ID = 406 ); 现在,使用以下 SELECT 语句检查 New_Employee 表的详细信息 输出
带 UPDATE 语句的子查询子查询和嵌套查询可以在结构化查询语言的 UPDATE 语句中使用,用于更新现有表的列。我们可以使用带 UPDATE 语句的子查询轻松更新一个或多个列。 带 UPDATE 语句的子查询语法 带 UPDATE 语句的子查询示例 此示例在 UPDATE 语句中使用 IN 运算符与子查询来更新表中的记录。 我们以 Employee_Details 和 Department 表为例。 Employee_Details 表的数据如下表所示
表:Employee_Details Department 表的数据如下表所示
以下语句更新部门等级为 A 的员工的薪资 以下查询将在输出中显示 Employee_Details 表的更新数据 输出
表:Employee_Details 带 DELETE 语句的子查询我们可以使用结构化查询语言的 DELETE 语句中的子查询轻松地从 SQL 表中删除一条或多条记录。 带 DELETE 语句的子查询语法 带 DELETE 语句的子查询示例 此示例在 DELETE 语句中使用 IN 运算符与子查询从表中删除记录。 我们以 Employee_Details 和 Department 表为例。 Employee_Details 表的数据如下表所示
表:Employee_Details Department 表的数据如下表所示
以下查询从 Employee_Details 中删除部门等级为 C 的员工的记录 以下查询将在输出中显示 Employee_Details 表的更新数据 输出
表:Employee_Details 下一个主题SQL 视图 |
我们请求您订阅我们的新闻通讯以获取最新更新。