select A.Item_ID From A Not In(select B.Item_ID From B)
select A.Item_ID From A Not In(select A.Item_ID From B)
这两句的区别?

解决方案 »

  1.   

    下面这句:select A.Item_ID From B
    b里面要包含a.item_ID的列名!!
      

  2.   

    select B.Item_ID From B)
    (select A.Item_ID From B)
    --
    取的不同的表
    不过
    select A.Item_ID From A Not In(select A.Item_ID From B)  //这句话能执行,我怀疑
      

  3.   

    select A.Item_ID From A Not In(select A.Item_ID From B)
    这句话可以执行么
      

  4.   

    经测试
    下面两句话没有一句是队的(mssql2000)
    select A.Item_ID From A Not In(select B.Item_ID From B)
    select A.Item_ID From A Not In(select A.Item_ID From B)---------------------------------------------------------
    CREATE TABLE [dbo].[A] (
    [item_id] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [col] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [col1] [char] (10) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [dbo].[B] (
    [item_id] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [col] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [col1] [char] (10) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO
      

  5.   

    如果能执行,我猜测:
    select A.Item_ID From A Not In(select A.Item_ID From B)
    等同于
    select A.Item_ID From A Not In(NULL)
    即等同于
    select A.Item_ID From A 
      

  6.   

    A表
    item_ID
    1
    2
    3
    b表
    item_ID
    2
    3
    4select A.Item_ID From A where item_id Not In(select B.Item_ID From B)
    --结果1
    select A.Item_ID From A where item_id Not In(select A.Item_ID From B)
    --没有结果
      

  7.   

    adou6686() ( ) 信誉:100  2007-08-23 09:05:44  得分: 0  
     
     
       以我的人格担保,不但能执行,还能执行出结果。
      
     
    --
    什么数据库
    mssql2000,oracle里面都是不能这样执行的
      

  8.   

    是完全可以执行的。我在别处得到答案了。
    沙漠里的草说得有一定的道理,但是并不完全对。正确的结果应该是:
    select A.Item_ID From A Not In(select A.Item_ID From B)
    等同于
    select A.Item_ID From A 
    谢谢大家的帮忙分析,都有分。
      

  9.   

    select A.Item_ID From A where a.item_id Not In(select B.Item_ID From B)
    select A.Item_ID From A where a.item_id Not In(select A.Item_ID From B)
    这样就可以啦。。可能是LZ笔误了。
      

  10.   

    sqlserver2000的测试结果
    select A.Item_ID From A where item_id Not In(select A.Item_ID From B)等同于select A.Item_ID From A where item_id Not In(select A.Item_ID From a)
      

  11.   

    怎么这么快就结贴了
    还什么结果都没有呢select A.Item_ID From A where item_id Not In(select A.Item_ID From B)
    执行计划的参数
    where ((a.item_id is null or a.item_id=null) or a.item_id=a.item_id)
      

  12.   

    虽然结贴了,还是想说下:
    select A.Item_ID From A where a.item_id Not In(select A.Item_ID From B)
    中(select A.Item_ID From B)应该等同于
    select A.Item_ID From B,A
    也就是A,B做笛卡尔积后取A.Item_ID的值, 
    这样结果集就是相当于 select A.Item_ID From A
    再用Not in 的话自然结果就是空了。
    如果用in的话会出来结果。
      

  13.   

    select A.Item_ID From A where a.item_id Not In(select A.Item_ID From B)
    中的"select A.Item_ID From B"获得的值实际上就是A.Item_ID,相常于常数也就说
    假设select A.Item_ID From A 获得的item_id为值1,这时子查询里select A.Item_ID From B的结果也是1(前提是B至少有一条数据)