应该是可以的,可能由于SQL的标准不规范,所以不同的RDBMS有区别。
不过你试试办这样吧:
SELECT * FROM A
WHERE A.字段1 NOT IN (SELECT B.字段1 FROM B)

解决方案 »

  1.   

    原语句如下
    select * from 东区6_2期
    where (站号)not in (select 站号 from 城区已交站)
    东区6_2期,城区已交站是两个表,站号是他们都有的字段,但是这两个表不存在相包含的情况。
    要求出[东区6_2期]表中与[城区已交站]中不同的部分
    关于zzyy()仁兄的解答,我试了,依然是零个纪录。
    我的另一种方法是虽然能够得出结果,但是我觉得逻辑上发生了变化。
    源语句如下
    SELECT *  FROM 东区6_2期
    where (站号 NOT in(SELECT 城区已交站.站号 FROM 东区6_2期,城区已交站 WHERE 城区已交站.站号=东区6_2期.站号))
    这时好像已经在[东区6_2期]表内进行比较,我十分困惑!!!
      

  2.   

    我使用analyzer分析后,发现一个问题,为什么执行第一个语句时会进行filter判断站号is null,然后再进行筛选,但是这样一来就没有任何价值了,不知道为什么要进行 is null 的筛选,
    更改后通过的语句如下
    SELECT *  FROM 东区6_2期 a
    where a.站号 not in(SELECT all b.站号 FROM 城区已交站 b where b.站号 is not null)and a.站号 is not null
      

  3.   

    第一条语句应该可以。
    这样试试:
    select * from 东区6_2期 a where a.站号 not in (select distinct b.站号 from b.站号 is not null)另外,字段名用中文比较方便,但表名也用中文就有点别扭了。
      

  4.   

    表名,字段名都应该用英文,如果英文不好,可以用拼音。
    另外,数据表中应该尽可能的避免使用null,实现不行,你可以用""呀。
    你把你的null,全改成"".再试试你的第一条语句。其实,在《sql server技术内幕》里说的很明白,除非有很重要的理由,不推荐使用null.
      

  5.   

    nono,可我一般做日本的项目,按说得用日文字段名吧。可我连五十音图都认不全。。天,简直是恶梦。所以,我选择只好英文字段名。
      

  6.   

    没错,谢谢大家的讨论,原因是因为表中的null值做的怪,如果表中有null,
    那么not in就会失效,yangzi兄说的很有道理