--clicodeA 是一个客户信息记录表,且每个客户的代码都是唯一的
--clicodeB 是一组客户,表中客户代码不重复
--现想在clicodeA中取与clicodeB中客户代码相同的客户信息,程序如下
select *
from clicodeA a, clicodeB
where a.clicode = b. clicode--结果出现重复的信息记录百思不得其解,恳请高人指点迷津

解决方案 »

  1.   


    如果两表clicode一一对应,肯定不会重复.
    如果不是,就是一对多,或多对一,就会出现重复.
      

  2.   

    --clicodeA 是一个客户信息记录表,且每个客户的代码都是唯一的  
    --clicodeB 是一组客户,表中客户代码不重复  
    --现想在clicodeA中取与clicodeB中客户代码相同的客户信息,程序如下  
    select *  
    from clicodeA a, clicodeB  
    where a.clicode = b. clicode  --结果出现重复的信息记录B中的客户代码都可在A中得到查询,但A中的客户代码都是不重复的,为什么会有一对多,或多对一的现象
    请大哥继续赐教
      

  3.   

    A表很好理解,B表里那"一组客户"是指什么呢?如果是A表的一个子集,那么也可以把代码作为唯一的,那,就是一对一关系,是不会出现重复的.或许,你的 B 表中本来就有某些客户具有多条记录.如果是这样,那么A对B就是一对多了,就有可能出现多条记录了.再查查吧.
      

  4.   

    B中的客户代码都可在A中得到查询,但A中的客户代码都是不重复的-------------------------
    select clicode , count(*) cnt from B group by clicode having count(*) > 1你试试看上面的SQL是否有记录出现.
      

  5.   

    3楼的大哥,B表确是A表的子集,我却是不明白为什么在1对1的条件下还会有重复记录
    刚才上网搜了一下,会不会是因为因为从两个表中提数的问题
    程序是不是应该改为
    select *
    from clicodeB a left outer join clicodeA b
    on a.clicode = b.clicode