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

  • 相关阅读:
    架构师的职责
    open-falcon的插件机制
    gitlab安装
    python把日期转换为秒数;日期转为字符串;datetime、date
    js获取table的值,js获取td里input的值
    grafana结合influxdb、open-falcon出图配置
    centos安装python的虚拟环境和虚拟管理环境
    centos的python2.6.x升级到python2.7.x方法;python2.6.x的版本就不要用了
    openfalcon的安装和使用
    influxdb的python操作
  • 原文地址:https://www.cnblogs.com/herbert/p/1773054.html
Copyright © 2011-2022 走看看