子查询

作者: SingleDiego | 来源:发表于2022-04-30 11:44 被阅读0次

子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询。

子查询用于为主查询返回其所需数据,或者对检索数据进行进一步的限制。

子查询可以在 SELECTINSERTUPDATEDELETE 语句中,同 =<>>=<=INBETWEEN 等运算符一起使用。






使用子查询必须遵循以下几个规则:

  • 子查询必须括在圆括号中。

  • 子查询的 SELECT 子句中只能有一个列,除非主查询中有多个列,用于与子查询选中的列相比较。

  • 子查询不能使用 ORDER BY,不过主查询可以。在子查询中,GROUP BY 可以起到同 ORDER BY 相同的作用。

  • 返回多行数据的子查询只能同多值操作符一起使用,比如 IN 操作符。

  • SELECT 列表中不能包含任何对 BLOBARRAYCLOB 或者 NCLOB 类型值的引用。

  • 子查询不能直接用在聚合函数中。

  • BETWEEN 操作符不能同子查询一起使用,但是 BETWEEN 操作符可以用在子查询中。






下面我们来看使用子查询的实例。

studentsmarks 两张表,分别如下。

students 表:

id name
1 Thomas
2 Dixon
3 Navarro
4 Cole

marks 表:

id student_id total_marks
1 1 95
2 2 80
3 3 74
4 4 81

现在我们想写一个查询,以确定所有获得比学号(即:ID)为 2 的学生更高分数的学生,为了解决这个问题,我们需要两个查询。一个查询返回学号为 2 的学生分数,第二个查询将根据第一个查询的结果找出分数更高的学生。

很容易地我们写出第一个查询:

SELECT *  
FROM marks
WHERE id = 2;

得到的结果是:

id student_id total_marks
2 2 80

现在我们知道了学号为 2 的学生成绩为 80,就可以写第二个查询来找出成绩比 80 高的学生。

SELECT students.id, students.name, marks.total_marks
FROM students, marks
WHERE students.id = marks.student_id
AND marks.total_marks > 80;

得到的结果是:

id name total_marks
1 Thomas 95
4 Cole 81

现在我们用子查询的方法,把上面两个查询合并到一起进行。

SELECT students.id, students.name, marks.total_marks
FROM students, marks
WHERE students.id = marks.student_id
AND marks.total_marks > 
(SELECT total_marks  
FROM marks
WHERE id = 2);

相关文章

  • Oracel_子查询

    SQL子查询 子查询语法 子查询 (内查询) 在主查询之前一次执行完成。 子查询的结果被主查询(外查询)使用 。 ...

  • Oracle | 子查询和伪列

    1. 子查询 (1)单行子查询 (2)多行子查询 1)ANY子查询 2)ALL 子查询 2. 伪列...

  • 《SQL必知必会》第 11 课 使用子查询

    目标: 11.1 子查询 11.2 利用子查询进行过滤 11.3 作为计算字段使用子查询 11.1 子查询 查询(...

  • MySQL 子查询

    什么是子查询 为什么要使用子查询 子查询的分类 怎样使用子查询 关联子查询 要使用的数据表 1. 什么是子查询? ...

  • 数据库第七天

    子查询 查询里面还有查询注意: 子查询优先于主查询执行 最好子查询用括号 查询比ALLEN工资高的员工信息 单行子...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

  • 17/12/6 子查询

    17/12/6 子查询 单行子查询 括号内的查询叫做子查询,也叫内部查询,先于主查询的执行。 子查询可以嵌入1.w...

  • MySql(七)子查询与虚表

    一、子查询 子查询在主查询前执行一次 主查询使用子查询的结果 子查询要用括号括起来 将子查询放在比较运算符的右边 ...

  • 数据分析之SQL子查询

    文章阅读路线: SQL子查询概念 独立子查询实例 相关子查询实例 SQL子查询常见玩伴 1.SQL子查询概念 子查...

  • MySql基础-子查询

    一、子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中。 子查询用()括起来 子查询,又叫内部查询,相对...

网友评论

      本文标题:子查询

      本文链接:https://www.haomeiwen.com/subject/mrfsyrtx.html