• 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

  • 相关阅读:
    bzoj2876 [Noi2012]骑行川藏
    关于线性基的一些理解
    bzoj2115 [Wc2011] Xor
    bzoj2884 albus就是要第一个出场
    bzoj2460 [BeiJing2011]元素
    bzoj2005 [Noi2010]能量采集
    关于积性函数的一些理解
    bzoj4300 绝世好题
    Servlet—文件上传
    JNDI—目录接口名
  • 原文地址:https://www.cnblogs.com/xiyou110/p/1342341.html
Copyright © 2020-2023  润新知