Qianfeng

DON'T WORRY BE HAPPY
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

mysql笔记16:创建高级联结

Posted on 2022-02-15 15:18  RonnieOS  阅读(24)  评论(0编辑  收藏  举报
  1. 表别名

与列别名不同,表别名只在查询执行中使用,不返回到客户机

select cust_name, cust_contact
from customers as c, orders as o, orderitems as oi
where c.cust_id = o.cust_id
and oi.order_num = o.order_num
and prod_id = 'TNT2';

  1. 使用不同类型的联结

使用表别名的一个理由是,能在单条select语句中不止一次使用相同的表。

2.1 自联结
自联结的一个例子:
select p1.prod_id, p1.prod_name from products as p1, products as p2
where p1.vend_id = p2.vend_id
and p2.prod_id = 'DTNTR';

2.2 自然联结
没有重复列

2.3 外部联结

有时候,某个表的行在另一个表中没有对应行,如果是内部联结,则该行不会在结果中出现。但是我们希望该表的每一行都在结果中出现,此时,应当使用外部联结。
select customers.cust_id, order.num
from customers left out join orders
on customers.cust_id = orders.cust_id;
其中left的含义是指左边表的每一行都要出现在结果集中。

2.4 使用带聚集函数的联结
联结是可以和聚集函数一同使用的:
select customers.cust_name , customers.cust_id, count(orders.order_num) as num_ord
from customers inner join orders
on customers.cust_id = orders.cust_id
group by customers.cust_id;