zoukankan      html  css  js  c++  java
  • 表连接

    有以下几种方式

    [INNER|{LEFT|RIGHT|FULL}[OUTER]][<join_hint>]JOIN

    1)内连接。内连接按照ON 所指定的连接条件合并2个表,返回满足条件的行:

    假如有这样的2个table

    Table 1:
    A B
    1 2
    1 3
    2 1
    3 0

    Table 2:
    A C
    1 20
    2 45

    4 50

    如果是INNER JOIN(或者直接就JOIN)的话,那就是这样的结果:

    对应的SQL语句:

    SELECT * FROM TABLE1 JOIN TABLE2 ON TABLE1.A = TABLE2.A

    如果不想那个出现那个重复的A列,可以这样写

    SELECT TABLE1.*, C FROM TABLE1 JOIN TABLE2 ON TABLE1.A = TABLE2.A

    INNER JOIN

    A B A C
    1 2 1 20
    1 2 1 20
    2 1 2 45

    2) 外连接

    外连接分三种:

    • 左外连接 LEFT OUTER JOIN(或者 LEFT JOIN)
    • 右外连接RIGHT OUTER JOIN(或者RIGHT JOIN)
    • 完全外连接FULL OUTER JOIN(或者FULL JOIN)

    左外连接:结果表中除了包括连接条件外,还包括左表中的所有行

    SELECT * FROM TABLE1 LEFT OUTER JOIN TABLE2 ON TABLE1.A = TABLE2.A

    LEFT OUTER JOIN
    A B A C
    1 2 1 20
    1 3 1 20
    2 1 2 45
    3 0 null null

     

    右外连接:结果表中除了包括连接条件外,还包括右表中的所有行

    SELECT * FROM TABLE1 RIGHT OUTER JOIN TABLE2 ON TABLE1.A = TABLE2.A

    RIGHT OUTER JOIN
    A B A C
    1 2 1 20
    1 3 1 20
    2 1 2 45
    N N 4 50

    N 代表null


     

    完全连接:结果表中除了包括连接条件外,还包括右表中的所有行

    SELECT * FROM TABLE1 FULL OUTER JOIN TABLE2 ON TABLE1.A = TABLE2.A

    FULL OUTER JOIN

    A B A C
    1 2 1 20
    1 3 1 20
    2 1 2 45
    3 0 N N
    N N 4 50 

    N 代表 null

    3)交叉连接: 将2个表进行笛卡尔积运算。结果表的行数等于两个表行数之积

    交叉连接时不能有条件的,且不能带WHERE子句。

    SELECT * FROM TABLE1 CORSS JOIN TABLE2

    A B A C
    1 2 1 20
    1 2 2 45
    1 2 4 50
    1 3 1 20
    1 3 2 45
    1 3 4 50
    2 1 1 20
    2 1 2 45
    2 1 4 50
    3 0 1 20
    3 0 2 45
    3 0 4 50

  • 相关阅读:
    数据分析也有发展趋势
    数据分析也有发展趋势
    大数据与人的主体性
    大数据与人的主体性
    数据分析告诉我们的四个经验教训
    数据分析告诉我们的四个经验教训
    大数据新闻传播是什么
    数据分析告诉你,转化才是王道
    数据分析告诉你,转化才是王道
    企业应如何培养数据驱动的分析文化?
  • 原文地址:https://www.cnblogs.com/herbert/p/1773054.html
Copyright © 2011-2022 走看看