||
方式1mysql> SELECT salary -> FROM salary -> WHERE userid = '2';+---------+| salary |+---------+| 2000.00 |+---------+1 row in set (0.00 sec)mysql> SELECT userid,salary -> FROM salary -> WHERE salary > 2000;+--------+---------+| userid | salary |+--------+---------+| 3 | 3000.00 || 4 | 4000.00 || 5 | 5000.00 |+--------+---------+3 rows in set (0.00 sec)方式2 自连接mysql> SELECT s1.userid,s1.salary FROM salary s1 JOIN salary s2 ON s1.userid = '2' AND s2.salary > s1.salary;+--------+---------+| userid | salary |+--------+---------+| 2 | 2000.00 || 2 | 2000.00 || 2 | 2000.00 |+--------+---------+3 rows in set (0.00 sec)方式3 子查询mysql> SELECT userid,salary -> FROM salary -> WHERE salary > ( -> SELECT salary -> FROM salary -> WHERE userid = '2' -> );+--------+---------+| userid | salary |+--------+---------+| 3 | 3000.00 || 4 | 4000.00 || 5 | 5000.00 |+--------+---------+3 rows in set (0.00 sec)
称谓的规范:外查询(或主查询)、内查询(或子查询)
分类方式1:
我们按内查询的结果返回一条还是多条记录,将子查询分为 ==单行子查询==、 ==多行子查询==
分类方式2:
我们按内查询是否被执行多次,将子查询划分为==相关(或关联)子查询==和==不相关(或非关联)子查询==
相关子查询与非相关子查询的区别:
子查询只执行一次,后这个结果作为主查询的条件进行执行,那么这样的子查询叫做==不相关子查询==
子查询需要执行多次,再将结果反馈给外部,这种方式就称为==相关子查询==
单行操作符:
操作符 | 含义 |
---|---|
IN | 等于列表中的任意一个 |
ANY | 需要和单行比较操作符一起使用,和子查询返回某一个值比较 |
ALL | 需要和单行比较操作符一起使用,和子查询返回所有值比较 |
SOME | 实际上是ANY的别名,作用相同,一般用ANY |
合作电话:010-64087828
社区邮箱:greatsql@greatdb.com