美文网首页
SQL JOIN 操作总结

SQL JOIN 操作总结

作者: youthcity | 来源:发表于2018-08-01 00:02 被阅读38次

前言

SQL中,JOIN 操作用于将多个表连接起来。我们工作中,常用的join方式有 INNER JOINLEFT JOIN。虽然 JOIN的方式有如下图所示的7种,实际上其实可以分为3种,分别是 INNER JOINLEFT JOINFULL OUTER JOIN,其余4种都是前三种的变种。

SQL JOINS

1)LEFT JOIN

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

SQL

SELECT column_name(s)
FROM table1
LEFT JOIN table2
WHERE table1.column_name = table2.column_name

SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
WHERE table1.column_name = table2.column_name
LEFT JOIN 图示

2)INNER JOIN

INNER JOIN 关键字在表中存在至少一个匹配时返回行。

SQL

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
INNER JOIN

3)FULL OUTER JOIN (FULL JOIN) (MySQL 不支持)

FULL OUTER JOIN 结合了 LEFT JOINRIGHT JOIN的结果。

SQL

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
FULL OUTER JOIN

4) FULL OUTER JOIN BUT a.Key is null or b.Key is null

SELECT * FROM table_a
FULL OUTER JOIN table_b
on table_a.column_name = table_b.column_name
where table_a.column_name is null or table_b.column_name is null
FULL OUTER JOIN BUT a.key is null or b.key is null

5) LEFT JOIN BUT b.key is null

SELECT * from table_a
LEFT OUTER JOIN table_b
on table_a.column_name= table_b.column_name
where table_b.column_name is null
LEFT JOIN BUT b.key is null

6)RIGHT JOIN

SELECT * FROM table_a
RIGHT JOIN table_b
ON table_a.column_name = table_b.column_name
image.png

7)RIGHT JOIN BUT a.key is null

SELECT * FROM table_a
RIGHT JOIN table_b
ON table_a.column_name = table_b.column_name
WHERE table_a.column_name is null

总结

在平时的实践中,使用最多的还是 inner joinleft joinleft joinright join可以看作为同一类型的join操作。好比,乘数与被乘数。也就是说,我们完全可以使用 left join 替代 right join。在我们公司NodeJS项目中,使用到了一个ORMTypeORM),这库就只提供left join

关于joinwhere语句 与 ON 语句,我们常常困惑将什么条件放到 where 合适 还是放到 on 中合适。当为 inner join时,放在 whereON 中,查询结果都一样。当为 outer(left、right) join 时,放在 whereON 就有区别。当需要对交际做筛选时放在 where 中,当需要对单张表做筛选然后进行 join操作时,放在 ON 中。

参考资料

相关文章

  • SQL JOIN 操作总结

    前言 SQL中,JOIN 操作用于将多个表连接起来。我们工作中,常用的join方式有 INNER JOIN、LEF...

  • 图说SQL Join

    原文:图说SQL Join 如果你也曾经被SQL语言中各种Join操作:Left Join, Right Join...

  • join

    join 操作 window join 方式 代码形式 相当于sql中的stream1 join stream2 ...

  • 关于left join

    前言 join是SQL查询中非常常见的一种操作,具体来说有join.left join,right join ,f...

  • HiveQL 数据查询

    HiveQL 查询操作 SQL操作•基本的Select 操作•基于Partition的查询•Join 基本的Sel...

  • 数据分析——目录页

    SQL 总结 表连接JOIN总结 SQLZOO SQLZOO练习1--SELECT basics SQLZOO练习...

  • LEFT JOIN & RIGHT JOIN

    参考资料 SQL JOIN SQL INNER JOIN 关键字 SQL LEFT JOIN 关键字 SQL RI...

  • 关于Left join,你可能不知道这些......

    来自公众号:超哥的杂货铺 join 是 SQL查询中很常见的一种操作,具体来讲有join,left join, r...

  • Spark难点解析:Join实现原理

    Join背景介绍 SQL的所有操作,可以分为简单操作(如过滤where、限制次数limit等)和聚合操作(grou...

  • SQL表连接(INNER JOIN, LEFT JOIN, RI

    SQL表连接(INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN...

网友评论

      本文标题:SQL JOIN 操作总结

      本文链接:https://www.haomeiwen.com/subject/ntekvftx.html