zoukankan      html  css  js  c++  java
  • inner join (转载)

    inner join的用法

    INNER JOIN ……ON的语法格式可以概括为:
    FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表X ON Member.字段号=表X.字段号
    您只要套用该格式就可以了。

    现成格式范例:
    虽然我说得已经比较明白了,但为照顾初学者,我还是以本会员注册系统为例,提供一些现成的语法格式范例,大家只要修改其中的数据表名称和字段名称即可。

    连接两个数据表的用法:
    FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort
    语法格式可以概括为:
    FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

    连接三个数据表的用法:
    FROM (Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel
    语法格式可以概括为:
    FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号

    连接四个数据表的用法:
    FROM ((Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel) INNER JOIN MemberIdentity ON Member.MemberIdentity=MemberIdentity.MemberIdentity
    语法格式可以概括为:
    FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号

    连接五个数据表的用法:
    FROM (((Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel) INNER JOIN MemberIdentity ON Member.MemberIdentity=MemberIdentity.MemberIdentity) INNER JOIN Wedlock ON Member.Wedlock=Wedlock.Wedlock
    语法格式可以概括为:
    FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON Member.字段号=表5.字段号

    ----------------

    IN
    确定给定的值是否与子查询或列表中的值相匹配。

    语法
    test_expression [ NOT ] IN
         (
             subquery
             | expression [ ,...n ]
         )

    参数
    test_expression

    是任何有效的 Microsoft® SQL Server™ 表达式。

    subquery

    是包含某列结果集的子查询。该列必须与 test_expression 有相同的数据类型。

    expression [,...n]

    一个表达式列表,用来测试是否匹配。所有的表达式必须和 test_expression 具有相同的类型。

    结果类型
    布尔型

    结果值
    如果 test_expression 与 subquery 返回的任何值相等,或与逗号分隔的列表中的任何 expression 相等,那么结果值就为 TRUE。否则,结果值为 FALSE。

    使用 NOT IN 对返回值取反。

    示例
    A. 对比 OR 和 IN
    下面的示例选择名称和州的列表,列表中列出所有居住在加利福尼亚、印地安纳或马里兰州的作者。

    USE pubs

    SELECT au_lname, state
    FROM authors
    WHERE state = 'CA' OR state = 'IN' OR state = 'MD'

    但是,也可以使用 IN 获得相同的结果:

    USE pubs

    SELECT au_lname, state
    FROM authors
    WHERE state IN ('CA', 'IN', 'MD')

    以下是上面任一查询的结果集:

    au_lname    state
    --------    -----
    White       CA
    Green       CA
    Carson       CA
    O'Leary       CA
    Straight       CA
    Bennet       CA
    Dull       CA
    Gringlesby       CA
    Locksley       CA
    Yokomoto       CA
    DeFrance       IN
    Stringer       CA
    MacFeather       CA
    Karsen       CA
    Panteley             MD
    Hunter             CA
    McBadden             CA

    (17 row(s) affected)

    B. 将 IN 与子查询一起使用
    下面的示例在 titleauthor 表中查找从任一种书得到的版税少于 50% 的所有作者的 au_ids,然后从 authors 表中选择 au_ids 与 titleauthor 查询结果匹配的所有作者的姓名。结果显示有一些作者属于得到的版税少于 50% 的一类。

    USE pubs
    SELECT au_lname, au_fname
    FROM authors
    WHERE au_id IN
        (SELECT au_id
        FROM titleauthor
        WHERE royaltyper < 50)

    下面是结果集:

    au_lname                                  au_fname             
    ---------------------------------------- --------------------
    Green                                     Marjorie             
    O'Leary                                   Michael              
    Gringlesby                                Burt                 
    Yokomoto                                  Akiko                
    MacFeather                                Stearns              
    Ringer                                    Anne                 

    (6 row(s) affected)

    C. 将 NOT IN 与子查询一起使用
    NOT IN 将找到那些与值列表中的项目不匹配的作者。下面的示例查找至少有一种书取得不少于 50% 的版税的作者姓名:

    USE pubs
    SELECT au_lname, au_fname
    FROM authors
    WHERE au_id NOT IN
        (SELECT au_id
        FROM titleauthor
        WHERE royaltyper < 50)

    下面是结果集:

    au_lname                                  au_fname             
    ---------------------------------------- --------------------
    White                                     Johnson              
    Carson                                    Cheryl               
    Straight                                  Dean                 
    Smith                                     Meander              
    Bennet                                    Abraham              
    Dull                                      Ann                  
    Locksley                                  Charlene             
    Greene                                    Morningstar          
    Blotchet-Halls                            Reginald             
    del Castillo                              Innes                
    DeFrance                                  Michel               
    Stringer                                  Dirk                 
    Karsen                                    Livia                
    Panteley                                  Sylvia               
    Hunter                                    Sheryl               
    McBadden                                  Heather              

  • 相关阅读:
    解决Android Studio和Android SDK Manager无法在线更新的问题[转]
    Git 推送和删除标签
    使用adbWireless无线调试Android真机设备[转]
    Android模拟器对应的电脑快捷键说明
    Windows下用cmd命令安装及卸载服务[转]
    重置SQLSERVER表的自增列,让自增列重新计数【转】
    解决“SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问……”【转】
    网页编辑器CKEditor4.3.1+CKFinder2.4+JW Player6.7(视频播放器)集成
    JW Player 6.7(网页视频播放器,可在手机中播放),自定义Logo和右键菜单链接,支持MP3、MP4、FLV等格式,支持通过HTML5、FLash播放
    Sqlserver列出所有数据库名,表名,字段名【转】
  • 原文地址:https://www.cnblogs.com/liufei88866/p/1063449.html
Copyright © 2011-2022 走看看