SQL进阶:子查询

一般情况下,我们都是直接对表进行查询,但有时候,想要的数据可能通过一次select 获取不到,需要嵌套select,这样就形成了子查询。

子查询可以位于查询语句的任意位置,主要的注意点在于用于不同的位置,和不同的关键字一起使用时,需要注意返回的列的数量行的数量

位于select部分

当位于select中时,一般只能返回一行一列。因为在结果集中,对应的位置只能容下一个值。

比如这里我们要查询选课表中的课程名称,除了使用join,还可以使用子查询

select
	cs.*,
	(
	select
		c.course_name
	from
		courses c
	where
		c.course_id = cs.course_id) as course_name
from
	course_selections cs;

结果

位于from部分

当位于from时,则没有了行数和列数的限制,等同于一张表。from部分的子查询常用在SQL优化中,用来做条件提升,以减少结果集的运算次数。这个会在后边的SQL优化中再讲。

比如这里我们要查询选课表中的课程名称,

 
 

你可能感兴趣的:(SQL使用从入门到优化,sql,子查询)