题解 | #检索每个顾客的名称和所有的订单号(二)#
检索每个顾客的名称和所有的订单号(二)
http://www.nowcoder.com/practice/4e73c4e770b941c9abc60814601ed498
搞懂各种连接很重要
本题思路
- 关键信息:没有下过单顾客名也需要列出来,需要使用左外连接或者右外连接;最后采用
order by
排序; - 左外连接:连接符号左边的表里面的数据全部显示,连接符号右边的表如果与左表匹配则正常列出;如果不匹配则置为
NULL
;MySQL中为表1 left outer join 表2 on 连接条件
,其中outer
可以省略; - 右外连接:与左外连接相反;MySQL中为
表1 right outer join 表2 on 连接条件
,其中outer
可以省略; - 各种连接区别博客:图解连接
右外连接代码
select c.cust_name cust_name, o.order_num order_num
from Orders as o right join Customers c on o.cust_id=c.cust_id
order by cust_name;
左外连接代码
select c.cust_name cust_name, o.order_num order_num
from Customers c left join Orders o on o.cust_id=c.cust_id
order by cust_name;
- 注意:从
group by
开始就可以使用select里面的别名,所以order by
也可以。