自联结和子查询的区别

通过以下实例,来验证自联结和子查询的区别

题目:目前有两张表,cust_info是客户表,order_list是订单表,两张表都有同样的字段名cust_id
要求查询客户赵一的所有订单信息,要求结果如下:
在这里插入图片描述

解题思路:
1.首先筛选出客户赵一的对应订单id
2.再根据订单id找到对应的订单信息

解法一:子查询:

select *
from order_list 
where cust_id=(
               select cust_id 
			   from cust_info 
			   where cust_name='赵一'
							 );
							 

解法二:自联结1

select o.*
from order_list o INNER JOIN cust_info c
on c.cust_id=o.cust_id
where c.cust_name='赵一'

解法三:自联结2

select o.*
from order_list o
,cust_info c
where c.cust_id=o.cust_id
and c.cust_name='赵一';

总结:
1.自联结是子查询的简化,自联结的代码行数更少
2.同时自联结的运行速度更快

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页