有表a和表b, 都有一个字段“ip地址”,采自不同的途径, a表比b表多了300多条记录,现在我要把多的这些记录挑出来,这两个表该怎么关联,查询语句该怎么写?
  问题很菜,但是我总觉得自己挑出的数据不对劲。小弟初学,还望各位大虾多多帮助!

解决方案 »

  1.   

    select * from a
    where a.ip地址 in(
    select ip地址 from a
    minus
    select ip地址 from b)或者:
    select * from a
    where a.ip地址 not in(
    select b.ip地址 from b
    where b.ip地址 is not null)
      

  2.   

    SELECT * FROM WHERE A.IP NOT IN (SELECT IP FROM B)
      

  3.   

    楼上的有点缺陷.如果B中有一条记录IP为NULL的话.
    将检索不到任何记录!
      

  4.   

    我可能说得不清楚,表a中的记录表b中可能没有,表b中的记录表a中可能没有,总之是杂烩在一起。现在要挑出的记录是表a中有的但表b中可能没有,表a和表b的记录长度差不多。表a记录总数是3077条,表b的记录总数是2961条。 这怎么挑呢?搞的小弟连国庆都过不好!
      

  5.   

    那么就加一个条件
    SELECT * FROM WHERE A.IP NOT IN (SELECT IP FROM B WHERE B.IP IS NOT NULL)
      

  6.   

    select ip from a where not exists(select 'a' from b where ip=a.ip)
    union
    select ip from b where not exists(select 'a' from a where ip=b.ip)