为了说明函数作用,现用两张具体表student 表和sclass 表完成下面示例。
student 表数据如下:
sclaas 表数据如下:
一、Join(Inner Join)
1.定义
Inner Join(或简写为Join)是内连接,它返回两个表中存在连接匹配关系的记录。
2.特点
特点:只返回两个表中匹配的记录,如果某个表中的行在另一个表中没有匹配行,则这些行不会出现在结果集中
3.实例
SELECT
s1.id,
s1.uname,
s1.age,
s2.class_name
FROM student s1
Join sclass s2
ON s1.class_id = s2.id;
二、Left Join
1.定义
Left Join是左连接,它返回左表的所有记录和右表中匹配的记录。如果右表中没有匹配的记录,则结果集中右表的部分将显示为NULL
2.特点
左表的所有记录都会显示,如果右表中没有匹配的记录,则右表的部分显示为NULL。
3.实例
SELECT
s1.id,
s1.uname,
s1.age,
s2.class_name
FROM student s1
Left Join sclass s2
ON s1.id = s2.id;
三、Right Join
1.定义
Right Join是右连接,它返回右表的所有记录和左表中匹配的记录。如果左表中没有匹配的记录,则结果集中左表的部分显示为NULL
2.特点
右表的所有记录都会显示,如果左表中没有匹配的记录,则左表的部分显示为NULL。
3.实例
SELECT
s1.id,
s1.uname,
s1.age,
s2.class_name
FROM student s1
Right Join sclass s2
ON s1.id = s2.id;
四、CROSS Join(笛卡尔积)
1.定义
笛卡尔积(CROSS JOIN)会返回两个表的笛卡尔积,即第一个表中的每一行与第二个表中的每一行组合生成一个新的行。如果第一个表有m行,第二个表有n行,则结果有m*n行
2.应用场景
适用于需要生成两个表的笛卡尔积的情况,通常用于生成测试数据或进行某些特定的计算。
3.实例
SELECT
s1.id,
s1.uname,
s1.age,
s2.class_name
FROM student s1
Cross Join sclass s2;
四、Join(Inner Join)、Left Join 、Right Join 和 Cross Join 的使用、区别 及 在 SQL 和 Hive SQL 中使用的区别
1、区别1
Hive Sql 使用连接函数Join时,不支持等值连接条件,而sql支持等值连接条件。