zoukankan      html  css  js  c++  java
  • sql中内联 和外联 区别

    sql中内联 和外联 区别

    2007-05-15 17:37

    这个概念一般看书不好理解。其实夜简单。有例子就简单了。

    比如:

    表A(主表)
    cardid username
    16 aa
    23 bb
    25 cc
    29 dd
    30 ee

    表B(子表)
    countid cardid score
    1 16 34
    2 25 300
    3 29 1.5

    cardid 列上联接 A 表和 B 表。

    分别用内联、外联试试。

    内联:
    SELECT cardid FROM A INNER JOIN B ON (A.cardid<>B.cardid)
    那么这样查询就会交叉地拿A和B去比较,上例来说就是拿『16,23,25,29,30』和16,25,29比。那么显然<>的结果是:23,25,29,30,16,25,29,30。。。不符合我们的要求。因为内联本来就只有找相同的功能,没有找不同的功能。

    左外联:
    SELECT cardid FROM A LEFT OUTER JOIN B ON (B.cardid=A.cardid) WHERE B.cardid IS NULL
    这里会拿左表(A)的所有行去和B比较,上例来说是『16,23,25,29,30』先和16比较,然后再和23比较。它将包括所有A表内容,而对应的B表,符合条件就打印,否则没有的话会为null。所以这样就按要求得到了为null的值,也就是缺少的。

    右外联:
    SELECT cardid FROM A RIGHT OUTER JOIN B ON (B.cardid=A.cardid) WHERE B.cardid IS NULL
    这里会拿右表(B)的所有行去和A比较,上例来说是16,25,29和『16,23,25,29,30』比较。结果只包含B表的所有行。在这里显然不符合要求。

    但SELECT cardid FROM B RIGHT OUTER JOIN A ON (B.cardid=A.cardid) WHERE B.cardid IS NULL是对的。事实上右外联都是通过转换为左外联实现的。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    IOS开发之XML解析以及下拉刷新上拉加载更多的分享
    iOS之网络数据下载和JSON解析
    iOS开发常用网站
    用shell脚本打ipa包
    iOS开发之网络基础知识
    iOS开发之Block
    iOS开发之用代码实现数据库FMDB的操作
    iOS开发之下拉刷新和上拉加载
    IOS之XML解析
    IOS之网络数据下载和JSON解析
  • 原文地址:https://www.cnblogs.com/jamesf/p/4751681.html
Copyright © 2011-2022 走看看