zoukankan      html  css  js  c++  java
  • SQL server join,left join,right join ,outer join,union解释

     

    给个通俗的解释吧.
    例表a
    aid adate
    1 a1
    2 a2
    3 a3
    表b
    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 空字符
    同样的也有right join
    指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
    此时的取出的是:
    1 a1 b1
    2 a2 b2
    4 空字符 b4

    “Outer Join
    这款的 Join 方式是一般人比较少用到的, 甚至有些 SQL 的管理者也从未用过, 这真是一件悲哀的代表, 因为善用 Outer Join 是可以简化一些查询工作的, 先来看看 Outer Join 的语法
    Select <要查询的字段> From
    [Outer] Join On
    语法中的 Outer 是可以省略的, 例如你可以用 Left Join 或是 Right Join, 在本质上, Outer Join 是 inclusive, 叫它做包容性吧! 不同于 Inner Join 的排他性, 因此在 Left Outer Join 的查询结果会包含所有 Left 资料表的资料, 颠倒过来讲, Right Outer Join 的查询就会包含所有 Right 资料表的资料。”

    FULL JOIN 或 FULL OUTER JOIN。
    完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值

     

    union:union默认就是去除重复的,而union ALL 是全部显示

    select A,L = count(*) from 表 where A = 1 group by A
    union
    select B,L = count(*) from 表 where B = 2 group by B
    union
    select B,L = count(*) from 表 where C = 3 group by C

    UNION取几个SELECT语句结果的并集,并会去掉重复记录,SELECT语句中字段个数和类型必须一致

    来源:http://blog.sina.com.cn/s/blog_3fdcd6170100a00s.html

  • 相关阅读:
    @property
    UIViewController卸载过程(ios6.0以后)
    UIViewController卸载过程(ios6.0之前)
    UIViewController启动过程
    意淫原理,还是很有意思的
    协议
    多线程理解
    内存溢出与内存泄露
    jquery:实例方法
    计划,模型
  • 原文地址:https://www.cnblogs.com/xiyou110/p/1342341.html
Copyright © 2011-2022 走看看