`

sql join

SQL 
阅读更多

both Table A and Table B.

 

 

Venn diagram of SQL inner join

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name

id    name       id    name
--    ----       --    ----
1     Pirate     2     Pirate
2     Monkey     null  null
3     Ninja      4     Ninja
4     Spaghetti  null  null
null  null       1     Rutabaga       
null  null       3     Darth Vader

Full outer join produces the set of all records in Table A and Table B, with matching records from both sides where available. If there is no match, the missing side will contain null.

Venn diagram of SQL cartesian join

 

SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name

id  name       id    name
--  ----       --    ----
1   Pirate     2     Pirate
2   Monkey     null  null
3   Ninja      4     Ninja
4   Spaghetti  null  null

Left outer join produces a complete set of records from Table A, with the matching records (where available) in Table B. If there is no match, the right side will contain null.

Venn diagram of SQL left join
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null

id  name       id     name
--  ----       --     ----
2   Monkey     null   null
4   Spaghetti  null   null

To produce the set of records only in Table A, but not in Table B, we perform the same left outer join, then exclude the records we don't want from the right side via a where clause.

join-left-outer.png
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableA.id IS null 
OR TableB.id IS null

id    name       id    name
--    ----       --    ----
2     Monkey     null  null
4     Spaghetti  null  null
null  null       1     Rutabaga
null  null       3     Darth Vader

To produce the set of records unique to Table A and Table B, we perform the same full outer join, then exclude the records we don't want from both sides via a where clause.

join-outer.png

There's also a cartesian product or cross join, which as far as I can tell, can't be expressed as a Venn diagram:

SELECT * FROM TableA
CROSS JOIN TableB

This joins "everything to everything", resulting in 4 x 4 = 16 rows, far more than we had in the original sets. If you do the math, you can see why this is a very dangerous join to run against large tables.

分享到:
评论

相关推荐

    SQL join 完全用法

    SQL join 完全用法 SQL join 完全用法 学习sql join

    画图解释 SQL join 语句1

    SQL Join 语句详解 SQL Join 语句是数据库管理系统中最基本也是最重要的语句之一。它允许用户从多个表中检索数据,并将其组合成一个结果集。今天,我们将使用图形来解释 SQL Join 语句的各种类型。 INNER JOIN ...

    sqljoin示例

    sqljoin示例,包含左联右联内联以及外联等连接方式是学习SQL必不可少的知识

    PL/SQL Join实例分析

    在PL/SQL(Oracle数据库的编程语言)中,JOIN语法尤其重要,因为它是处理复杂查询的基础。以下是PL/SQL中不同类型的JOIN及其特点的详细分析: 1. **左连接(LEFT JOIN)**: 左连接返回左表(Aa)的所有行,即使在...

    手把手教你写 SQL Join 联接 -

    手把手教你写 SQL Join 联接 手把手教你写 SQL Join 联接 - Defonds 的专栏 - CSDN博客手把手教你写 SQL Join 联接 - Defonds 的专栏 - CSDN博客

    数据库应用技术:SQLJOIN多表查询.pptx

    【数据库应用技术】中的SQL JOIN多表查询是数据库操作中常用的一种高级查询技巧,它能够有效地结合多个数据表,获取更复杂的数据信息。在数据库设计中,常常需要将多个相关表的数据整合在一起进行分析,而JOIN操作...

    SQL Join类型1

    SQL Join类型除内join,其他join没匹配数据时数组字段输出为NULL。

    sql join on 用法

    SQL Join On 用法 SQL Join On 是一种常用的数据库连接方式,用于连接两个或多个表,通过指定的连接条件来筛选和组合数据。join on 语句的基本结构为: `SELECT * FROM table1 [LEFT/RIGHT/INNER] JOIN table2 ON ...

    sql join( inner join, outer join) 分析

    在SQL(结构化查询语言)中,JOIN操作是用于合并两个或多个表的数据,以便根据它们之间的关联性创建新的结果集。JOIN关键字是SQL查询中的关键部分,它允许我们在不同的表之间建立联系,以获取更丰富的信息。在这个...

    LINQ to SQL语句之Join和Order By

    LINQ to SQL语句之Join和Order By部分代码 语句描述:这个例子在From子句中使用外键导航筛选在西雅图的雇员,同时列出其所在地区。这条生成SQL语句为: SELECT [t0].[FirstName], [t0].[LastName], [t2]....

    表连接 SQL JOIN 速查表

    在SQL中,表连接(JOIN)是用于合并两个或多个表的数据的关键操作,它允许你在查询时基于共同的列从不同的表中检索信息。这里我们将深入探讨几种主要的JOIN类型,包括自然JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN...

    SQL 连接 JOIN 例解

    SQL 连接 JOIN 例解

    SQL 语法 SQL 总结 SQL教程

    SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Union SQL Select Into SQL Create DB SQL Create Table SQL Constraints SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key ...

    sql语句中join的用法

    ### SQL语句中JOIN的用法详解 在SQL查询语言中,`JOIN`是一个非常重要的概念,它允许我们从两个或多个表中提取数据。通过使用不同类型的JOIN操作,我们可以根据表之间的关系来灵活地组织数据。下面我们将详细介绍几...

    SQL JOIN 连接详细介绍及简单使用实例

    SQL JOIN 连接 SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。 让...

    sqlJoin.jpg

    MySQL join summary graph and code.I just wanna submit a .jpg,

    sql语句join中on和where的区别

    ### SQL语句JOIN中ON和WHERE的区别 #### 引言 在SQL中,JOIN操作用于合并两个或多个表中的行。正确理解`ON`和`WHERE`子句的区别对于高效地编写查询至关重要。本文将详细解释这两者的不同,并通过具体的例子来加深...

    面试排坑指南之SQL join

    在面试的时候曾3次踩过了sql join的坑,第一次是校招面试的时候,面的是国内某大行的开发岗,被问到会不会使用sql join,当时直接回答的是不会,只会使用简单的sql操作。第二次面试的是另一大行的测试岗,人家直接问...

    SQL语句left join/right join/inner join 的用法比较

    在SQL查询中,JOIN操作是连接两个或多个表的关键部分,用于从这些表中提取相关数据。本篇文章将深入探讨LEFT JOIN、RIGHT JOIN以及INNER JOIN的用法,并通过实例进行对比,帮助理解它们之间的差异。 1. LEFT JOIN...

Global site tag (gtag.js) - Google Analytics