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

  • 相关阅读:
    Redhat Lighttpd安装配置
    PHP正则表达式学习参考的文章
    50点提高PHP编程效率 引入缓存提升性能
    位运算符C语言
    Redhat Mongodb学习笔记
    Redhat Cacti安装配置
    HTTP 状态代码表示什么意思?
    map容器对象插入数据的4种方式
    socket网络间通信初识
    仿美团项目-第一部分
  • 原文地址:https://www.cnblogs.com/herbert/p/1773054.html
Copyright © 2011-2022 走看看