- 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句
- 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
- 子查询嵌套在查询内部,且必须始终出现在圆括号内。其外层查询可以是:SELECT,INSERT,UPDATE,SET或DO。查询不一定是查找,是所有SQL语句的统称
子查询语法:
- 子查询要在圆括号内
- 子查询内的语句不用分号结束
- 没有ANY或ALL关键字修饰时会报错:Subquery returns more than 1 row,因为子查询的返回数据不止1行,所有直接 > 就不知道大于哪个记录
- 用ANY关键字修饰时(同SOME),大于一个就行,即记录中价格大于返回值集合中最小的就可以,相当于或运算(其中一个成立就能跳出判断)
- 用ALL关键字修饰时,要大于返回值集合中的全部元素,即大于其中的最大元素,相当于与运算(所有成立才能跳出判断)
- = ANY 即查找记录中的值等于任何一个返回值集合元素的价格就可以,这样在子查询中的三个’超级本’ 就被查找出来(或运算)
- IN 与 = ANY 等价
- = ALL 返回的集合中是空的,因为不可以有一个记录的价格同时等于三个值(与运算)
- NOT IN 与 <> ALL(即 != ALL)等价
- 注意这里跟数学逻辑上有点不一样