select 
M_SD.ID as ShoppingCartID
,P_P.ID as ProductID
,P_P.ProductName
,M_M.RealName
,B_C.ColorName
,B_S.Name as SizeName
,M_SD.Quantity
,P_PS.ProductImg
,M_SD.ProductDetailID
,M_SD.SellMemberID
from dbo.M_ShoppingCartDetail M_SD 
left join dbo.P_ProductDetail P_PD
on M_SD.ProductDetailID=P_PD.ID
    left join dbo.B_Color B_C
on P_PD.ColorID=B_C.ID
inner join dbo.B_Size B_S
on P_PD.SizeID=B_S.ID
inner join dbo.P_Product P_P
on P_PD.ProductID=P_P.ID
inner join dbo.P_ProductShowImg P_PS
on P_PS.ProductID=P_P.ID
inner join dbo.M_Member M_M
 on M_M.ID=M_SD.SellMemberID数据是出来了,就是出现了重复的记录了,多个 ShoppingCartID了
求解?

解决方案 »

  1.   

    试了啊,不知道怎么不行啊,还有重复的
    lfte ,inner都试了,还是有重复的
      

  2.   

    distinct不行的话,可定你数据数据点列是不重复,那看你的取舍了,用group by之类的
      

  3.   

    看你的语句多个ShoppingCartID很正常,你的重复是指什么?是出来的行相同了,还是有相同ShoppingCartID
    而其他的并不相同?
      

  4.   


    select distinct
        M_SD.ID as ShoppingCartID
        ,P_P.ID as ProductID
        ,P_P.ProductName
        ,M_M.RealName
        ,B_C.ColorName
        ,B_S.Name as SizeName
        ,M_SD.Quantity
        ,P_PS.ProductImg
        ,M_SD.ProductDetailID
        ,M_SD.SellMemberID
    from dbo.M_ShoppingCartDetail M_SD 
            left join dbo.P_ProductDetail P_PD
                    on M_SD.ProductDetailID=P_PD.ID
            left join dbo.B_Color B_C
                    on P_PD.ColorID=B_C.ID
            inner join dbo.B_Size B_S
                    on P_PD.SizeID=B_S.ID
            inner join dbo.P_Product P_P
                    on P_PD.ProductID=P_P.ID
            inner join dbo.P_ProductShowImg P_PS
                    on P_PS.ProductID=P_P.ID
            inner join dbo.M_Member M_M
                     on M_M.ID=M_SD.SellMemberID
      

  5.   

    select max(id),name from tablename group by name
      

  6.   

    select 
        distinct(M_SD.ID) as ShoppingCartID
        ,P_P.ID as ProductID
        ,P_P.ProductName
        ,M_M.RealName
        ,B_C.ColorName
        ,B_S.Name as SizeName
        ,M_SD.Quantity
        ,P_PS.ProductImg
        ,M_SD.ProductDetailID
        ,M_SD.SellMemberID
    from dbo.M_ShoppingCartDetail M_SD 
            left join dbo.P_ProductDetail P_PD
                    on M_SD.ProductDetailID=P_PD.ID
            left join dbo.B_Color B_C
                    on P_PD.ColorID=B_C.ID
            inner join dbo.B_Size B_S
                    on P_PD.SizeID=B_S.ID
            inner join dbo.P_Product P_P
                    on P_PD.ProductID=P_P.ID
            inner join dbo.P_ProductShowImg P_PS
                    on P_PS.ProductID=P_P.ID
            inner join dbo.M_Member M_M
                     on M_M.ID=M_SD.SellMemberIDdistinct()函数只能在查询语句的第一列,如果还不行,就只能写存储过程,把查出来的数据放入到临时表,添加一个临时表,给零时表设个主键,主键是不能重复的
      

  7.   

    多表连接如果是两条记录完全相同,可用distinct消除
    但如下面的重复是正常的
    部门1,姓名1
    部门1,姓名2
    部门1,姓名3一个部门有多个人,查询出现多条记录部门名称重复,是正常情况
    如果要显示成以下格式
    部门1,姓名1
          姓名2
          姓名3需对结果再作处理
      

  8.   

    distinct
    这个我也知道 
    呵呵
      

  9.   

    select distinct * temp from tablename
    drop table temp;
      

  10.   


    M_ShoppingCartDetail:M_SD.ProductDetailID是否1:N
      

  11.   

    多个 ShoppingCartID了  这几个ShoppingCartID 的没列的值是否都一样? 
      

  12.   

    distinct是可以取出你数据集中不重复的数据,如果取出的还是
    重复的,说明你得数据有问题
      

  13.   

    表与表之间出现1:n的情况
    添加条件处理或者Inner 结果集
      

  14.   

    重建表结构,加个ID设为自动递增,然后取最后一个ShoppingCartID
      

  15.   

    select * from dbo.M_ShoppingCartDetail  a
    where id=(select top 1 id from dbo.M_ShoppingCartDetail  
    where ShoppingCartID=a.ShoppingCartID order by id desc)
      

  16.   

    还是看下主键是什么,再DISTINCT