应该是联接上的问题!
用distinct除去重复值!

解决方案 »

  1.   

    create view aaa
    as
    select distinct * from a,b where a.id=b.id
    --这样除去的整个A,B表组合的重复记录,而不是除去A,B表中某个字段的重复值。
    具体见联机帮助--输入关键字distinct查看它的功能及用法!
      

  2.   

    你是不是没有用连接呀,或者是没有用WHERE字句,进行连接!
    你比较以两个语句:use northwind 
    go
    SELECT *
    FROM dbo.Orders INNER JOIN
          dbo.[Order Details] ON dbo.Orders.OrderID = dbo.[Order Details].OrderIDSELECT *
    FROM dbo.Orders ,
          dbo.[Order Details]注:如果在没有WHERE 子句的情况下连接两个或两个以上的表,那么你正在执行笛卡尔乘积。这个连接将所有表中的所有行在FROM子句中结合起来。如果每个表中有20行,那么就会出理400行(20*20)的最终结果。总得在WHERE子句中连接表,非确实想将所有选定表中的所有行连接起来!
      

  3.   

    解决办法:
    1。确定要关联的字段
    2。判断有重复的值。
    例如:
    create table t1 
    (xh char(10),xm char(100))
    go
    create table t2
    (xh char(10),kch char(10),cj float)
    go
    create view v1
    as 
    select t1.xh,t1.xm,t2.kch,t2.cj from t1 inner join t2 on t1.xh=t2.xh
      

  4.   

    --参考
    连接无非是这几个
    --内连接和where相同
    inner join
    --左向外连接,返回左边表所有符合条件的
    left join
    --右向外连接,返回右边表所有符合条件的
    right join
    --完整外部连接,左向外连接和右向外连接的合集
    full join
    --交叉连接,也称笛卡儿积。返回左表中的每一行与右表中所有行的组合
    cross join
      

  5.   

    http://expert.csdn.net/Expert/topic/2564/2564377.xml?temp=.365719
      

  6.   

    还是把你的表连接连好,用distinct过滤掉重复项,会影响效率的
      

  7.   

    select ...from 表 left outer join 有n个人的表