join关键字默认为内连接,返回两张表中都有的信息;
left join以前面的表作为主表和其他表进行关联,返回的记录数和主表的记录数相同,关联不上的字段用NULL;
right join与left相反,以后面的表为主表,和前面的表做关联,返回的记录数和主表一致,关联不上的字段为NULL;
full join为全关联,返回两个表记录的并集,关联不上的字段为NULL;
left semi join以关键字前面的表为主表,两个表对on的条件字段做交集,返回前面表的记录;
cross join(笛卡尔积关联)返回两个表的笛卡尔积结果,不需要指定关联键;
由于Mysql的写法在hive中会出错,改成下面的就可以了
mysql写法:
SELECT
ename,sal
FROM
emp e1
where sal > (
SELECT
avg(sal)
FROM
emp
)
ORDER BY e1.sal desc
hive写法:
cross join 可以不加连接条件
select ENAME,SAL
from
(select avg(SAL) as avgSAL from emp) a
cross join
emp b
where SAL > avgSAL
order by SAL desc;