none
access2003错了,还是我错了,问 not in子句 RRS feed

  • 问题

  • 如何查找二表中不存在的数据

    room table
    ---------------------
    id    roomNo
    1 606
    2 707
    3 808
    ---------------------

    custom table
    ----------------------
    id   name   roomNo
    1    lee 707
    2    wang       808
    ----------------------

    有二个表 
    room   可以租的房
    custom 已经租出的房

    现在要查询 没有 被租出的房

    试用左连,只能查出已经出租的房,不能给出 未出租的房。
    查询语句:
    ------------------
    SELECT r.roomNO 
    FROM room AS r 
    LEFT JOIN CUSTOM AS C 
    WHERE 
    r.roomNo=c.roomNo;
    ------------------

    输出结果
    -----------------
    roomNo
    707
    808
    ----------------
    而不是我想要的606

    后来用

    select * from room where roomNo  not in (select roomNo  from custom )

    一直给出三个结果,606 707 808
    想来想去写的应没错
    在mysql里试了下,成功了,给出606结果了

    拐到,mysql 跟access 2007的结果居然不一样 

    现在我在想acccess的问题,还是我检索语句有问题,或者有没有其他方法?



    2009年11月27日 4:27

答案

全部回复

  • 看看感觉不应该,就在Access 2007 中按照lz的 两个表和一个query 一摸一样做了一遍。 列类型和长度都是使用缺省值

    select * from room where roomNo  not in (select roomNo  from custom )  返回结果很正常,一个 606,  not in 工作正常。


    建议lz 检查一下两个表的roomno 的数据类型,长度等等之类看是否匹配

    2009年11月27日 11:55
    版主
  • 谢谢回复,拉了根关系线后,就好了。
    :)
    差点用mysql作后台,access作前台管理呢。

    谢谢

    2009年11月28日 8:05