SQL连接查询 JOIN
基本概念
看gairuo这个图,一目了然
基本语法
SELECT <list3>
FROM
(SELECT <list1>
FROM T) AS a
<LEFT / RIGHT> JOIN
(SELECT <list2>
FROM C) AS b ON a.id = b.id AND a.name = b.name
on 为两个表的连接点。
a和b为两张基础表。
连接方式 | 逻辑 |
---|---|
join | 既inner join 将两个表共有的部分组成新表 |
left join | 以左表为基准,左表的全集及右表有的值,右表无值则填null |
right join | 以右表为基准,右表的全集及左表有的值,左表无值则填null |
full join | 包含左右两表所有的行,对应左右表没有的则填null |
示例
select s.name as name, -- 姓名
s.class as class, -- 班级
c.teacher as teacher -- 老师
from (select name,
class
from students) as s
left join
(select class,
teacher
from class) as c on s.class = c.class
where s.class in (2,3)
- 连接后再在最外层 SELECT 给出要返回的字段,字段指定来自哪个表
- 带 where 等同于 inner join
- hive 的 join 语法仅支持等值连接,不支持非等值的连接