首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在 SQL 中使用 LEFT、RIGHT、INNER、OUTER、FULL 和 SELF JOIN?

什么是JOIN,为什么需要它们? 在进行复杂的分析处理和数据发现时,一个表的数据通常不足以提供重要的见解,因此需要合并多个表。 SQL,作为与关系数据库通信的一种方法,允许您在表之间创建关系....本文介绍如何使用 SQL 来连接表。 SQL JOIN 的类型 左连接、内连接、完全连接、自连接和交叉连接是其他五种主要连接类型。 为了与数据库连接,我们必须在语句中显式或隐式地提供连接类型。...这是通过使用诸如“LEFT JOIN”、“INNER JOIN”和“FULL OUTER JOIN”等术语来实现的。 每个类别都有自己的一组应用程序。 希望下面的比较表可以帮助您识别它们的小差异。...image.png LEFT JOIN 右手边的表可能被认为是参考表或字典,我们从中扩展左手边表中的信息。 因此,左连接用于检索左表中的所有条目,同时引用右表中的值。...gt FULL OUTER JOIN Country_Code cc ON gt.country_code = cc.fips_code; 查询结果: image.png RIGHT JOIN 右连接与左连接相同

2.1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL中 LEFT JOIN 左表合并去重实用技巧

    : MySQL left join 语句格式为:A LEFT JOIN B ON 条件表达式 left join 是以A表为基础,A表即左表,B表即右表。...左表(A)的记录会全部显示,而右表(B)只会显示符合条件表达式的记录,如果在右表(B)中没有符合条件的记录,则记录不足的地方为NULL。...使用left join, A表与B表所显示的记录数为 1:1 或 1:0,A表的所有记录都会显示,B表只显示符合条件的记录。...select * from a left join(select id from b group by id) as b on a.id=b.aid 拿出b表的一条数据关联 使A表与B表所显示的记录数为...join B on A.aid = B.bid; left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。

    1.7K10

    Spark SQL 之 Join 实现

    left outer join left outer join是以左表为准,在右表中查找匹配的记录,如果查找失败,则返回一个所有字段都为null的记录。...因为既然完成left outer join又要完成right outer join,所以full outer join仅采用sort merge join实现,左边和右表既要作为streamIter,又要作为...,则说明右表中没有与左表rowA对应的记录,那么joinrowA与nullRow,紧接着,rowA更新到左表的下一条记录;如果keyA>keyB,则说明左表中没有与右表rowB对应的记录,那么joinnullRow...与rowB,紧接着,rowB更新到右表的下一条记录。...left anti join left anti join与left semi join相反,是以左表为准,在右表中查找匹配的记录,如果查找成功,则返回null,否则仅返回左边的记录,其基本实现流程如下图所示

    9.5K1111

    Spark调优 | 不可避免的 Join 优化

    left outer join left outer join是以左表为准,在右表中查找匹配的记录,如果查找失败,则返回一个所有字段都为null的记录。...因为既然完成left outer join又要完成right outer join,所以full outer join仅采用sort merge join实现,左边和右表既要作为streamIter,又要作为...,则说明右表中没有与左表rowA对应的记录,那么joinrowA与nullRow,紧接着,rowA更新到左表的下一条记录;如果keyA>keyB,则说明左表中没有与右表rowB对应的记录,那么joinnullRow...与rowB,紧接着,rowB更新到右表的下一条记录。...left anti join left anti join与left semi join相反,是以左表为准,在右表中查找匹配的记录,如果查找成功,则返回null,否则仅返回左边的记录,其基本实现流程如下图所示

    4.6K20

    Impala Join类型介绍

    该join会将左表中的所有记录都输出,即使右边中没有与之匹配的结果,我们使用如下的SQL进行测试: select id,name,depart_name from employee left outer...RIGHT [OUTER] JOIN 这种join方式刚好与left相反,会将右边中所有的记录输出,即使没有在左表中匹配到相应的记录,我们使用如下的SQL进行测试: 我们可以从输出结果看到,即使部门没有分配雇员...例如,如果我们使用left semi join的话,那就只会返回左表中匹配到的数据(注意这里与left outer join的区别),我们使用如下的SQL进行测试: select id,name from...semi join的结果,分别如下的左图和右图所示,结合SQL我们可以发现,left semi join其实就是只返回left outer join中,左表的数据,right semi join也是同样的道理...需要注意的是,我们在使用left semi join的时候,无法select右表的列,否则SQL会报错,如下的SQL会直接返回失败: select id,name,depart_name from employee

    2K20

    SQL连接的可视化表示

    1.Left JOIN (左连接) Left JOIN.jpg 该查询将返回左表(表A)中的所有记录,而不管这些记录是否与右表(表B)中的任何记录相匹配。...Right JOIN(右连接) Right JOIN.jpg 该查询将返回右表(表B)中的所有记录,而不管这些记录是否与左表(表a)中的任何记录相匹配。...这个查询将返回左表(表A)中与右表(表B)中有匹配记录的所有记录。...JOIN(左连接不包含内连接) Left Excluding JOIN.jpg 这个查询将返回左表(表A)中所有与右表(表B)中任何记录不匹配的记录。...Excluding JOIN.jpg 5.Right Excluding JOIN(右连接不包含内连接) Right Excluding JOIN.jpg 这个查询将返回右表(表B)中与左表(表A)中任何记录不匹配的所有记录

    70620

    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

    在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:      1)LEFT  JOIN或LEFT OUTER JOIN      左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行...如果右表的某行在左表中没有匹配行,则将为左表返回空值。        3)FULL  JOIN 或 FULL OUTER JOIN 完整外部联接返回左表和右表中的所有行。...3、交叉联接    交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。    ...外连接分三类:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。...全外连接实际是上左外连接和右外连接的数学合集(去掉重复),即“全外=左外 UNION 右外”。 说明:左表就是在“(LEFT OUTER JOIN)”关键字左边的表。右表当然就是右边的了。

    5.7K10
    领券