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

  • 相关阅读:
    mybatis框架-用类映射返回结果
    ArrayLLis 线程不安 实验
    快速求幂运算笔记
    nyoj 56 阶乘中素数的个数
    求正整数n所有可能的和式的组合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2
    synchronize学习
    nyoj 找球号三(除了一个数个数为基数,其他为偶数,编程之美上的)
    递归判断一个数是否递增
    快速排序c++
    x&-x
  • 原文地址:https://www.cnblogs.com/herbert/p/1773054.html
Copyright © 2011-2022 走看看