zoukankan      html  css  js  c++  java
  • inner join on, left join on, right join on的区别与介绍

    Table A 
    aid   adate 
    1      a1 
    2      a2 
    3      a3 
    TableB 
    bid bdate 
    1    b1 
    2   b2 
    4    b4 
    两个表a,b相连接,要取出id相同的字段 
    select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据. 
    此时的取出的是: 
    1 a1 b1 
    2 a2 b2 

    那么left join 指: 
    select * from a left join b on a.aid = b.bid 
    首先取出a表中所有数据,然后再加上与a,b匹配的的数据 
    此时的取出的是: 
    1 a1 b1 
    2 a2 b2 
    3 a3 空字符 

    http://hovertree.com/menu/sql/
    同样的也有right join 
    指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据 
    此时的取出的是: 
    1 a1 b1 
    2 a2 b2 
    4 空字符 b4 

    LEFT JOIN 或 LEFT OUTER JOIN。 
    左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行, 
    而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值 


    举个例子你就能知道了! 

    A表(a1,b1,c1)      B表(a2,b2) 
    a1   b1   c1       a2    b2 
    01   数学 95       01    张三 
    02   语文 90       02    李四 
    03   英语 80       04    王五 
    select A.*,B.* from A 
    inner join B on(A.a1=B.a2) 
    结果是: 
    a1   b1   c1       a2    b2 
    01   数学 95       01    张三 
    02   语文 90       02    李四 

    select A.*,B.* from A 
    left outer join B on(A.a1=B.a2) 
    结果是: 
    a1   b1   c1       a2    b2 
    01   数学 95       01    张三 
    02   语文 90       02    李四 
    03   英语 80       NULL  NULL 

    select A.*,B.* from A 
    right outer join B on(A.a1=B.a2) 
    结果是: 
    a1   b1   c1       a2    b2 
    01   数学 95       01    张三 
    02   语文 90       02    李四 
    NULL NULL NULL     04    王五 

    select A.*,B.* from A 
    full outer join B on(A.a1=B.a2) 
    结果是: 
    a1   b1   c1       a2    b2 
    01   数学 95       01    张三 
    02   语文 90       02    李四 
    03   英语 80       NULL  NULL 
    NULL NULL NULL     04    王五

    推荐:http://www.cnblogs.com/roucheng/p/3504463.html

  • 相关阅读:
    c++ socket发送数据时,sendData = char * string 导致的乱码问题
    c++ sprintf() 用法
    c++ 将float 类型转换成string 类型
    c++中 string类型 转为 char []类型
    c++ 去掉所有空格及换行符
    c++处理字符串string.find()与string::npos
    C1010 unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source
    C++ socket bind() 函数绑定错误
    windows 全局安装 composer
    VMware Tools (ubuntu系统)安装详细过程与使用
  • 原文地址:https://www.cnblogs.com/roucheng/p/sqljoin.html
Copyright © 2011-2022 走看看