子查询

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

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分组

posted @ 2023-02-28 16:55  Carllll  阅读(12)  评论(0编辑  收藏  举报