你好,我在学习SQL(Structured Query Language),并通过写文章的方式整理和输出所学,这是第四篇,题目是《复杂查询》,主要内容是子查询。
什么是子查询呢?
当查询语句当中嵌套查询语句,前者就被称为主查询,后者被称为子查询——它也是一个完整的查询语句。
什么时候要用子查询呢?
当想要查询的问题中某个元素不能用单个语句实现的时候,就要用子查询了。这样说比较抽象,我举个例子。
现在要求查询在“掌”这门功课中,成绩比黄老邪的成绩高的那些学生的信息,包括学号、姓名、课程号、课程名称、成绩。
在这个问题中,有这么几个要素:
想要得到的查询结果:学号、姓名、课程号、课程名称、成绩
条件:课程名称为“掌”,成绩>黄老邪在掌这门课上的成绩
在这些要素中,学号、姓名、课程号、课程名称、成绩都可以用select这个语句实现,课程名称为“掌”可以用where语句实现,唯独“黄老邪在掌这门课上的成绩”这个要素没办法通过单个语句实现。
所以,想要得到“黄老邪在掌这门课上的成绩”,就需要用子查询实现。
嵌套查询的运行顺序是先运行子查询,后运行主查询。在查询语句内部的运行顺序在上一篇文章中讲过,它是这样的:
在上面的例子中子查询出现在where语句中,如果有需要,它也可以出现在select语句中,视情况而定,比如这样: