您现在的位置: > 技术沙龙 > 数据库 > SQL Server > Transact-SQL 参考 > IN
  • 相关软件
    >IN 创建者:webmaster 更新时间:2006-02-16 15:51

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



    语法


    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_idstitleauthor 查询结果匹配的所有作者的姓名。结果显示有一些作者属于得到的版税少于 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        
    Ringer                       Albert          

    (17 row(s) affected)
    相关文章
    本页查看次数: