数据库之八:子查询

子查询就是将查询结果当做表,对其进行查询操作,如:

Select column1,column2... from (select * from student) as t

  a、内层表会有一个结果,外层查询对内层查询进行查询操作;

  b、内层查询先执行,然后再对外层执行

  c、可以对子查询命别名

1、标量子查询:


标量子查询就是返回单一结果的子查询,这样我们就可以对这种结果在where等字句中做条件运算了。

能够使用常数或者列名的地方,无论是 SELECT 子句、GROUP BY 子句、HAVING 子句,还是ORDER BY 子句,几乎所有的地方都可以使用。

标量子查询绝对不能返回多行结果

2、关联子查询:


SELECT product_type, product_name, sale_price

 FROM Product AS P1 

 WHERE sale_price > (SELECT AVG(sale_price)

 FROM Product AS P2 

 WHERE P1.product_type = P2.product_type

 GROUP BY product_type)

内层查询按product_type分组聚合求出平均自,然后结果和P1连接,平均值和P1.sale_price比较,每个P1.sale_price都有对应的平均值可以比较,它们按照product_type分组

尽管很渺小,但终究会变得伟大
原文地址:https://www.cnblogs.com/chenbao1012/p/11833544.html