日期:2014-05-17  浏览次数:20554 次

三表连接查询 其中有sum求和,取总和最高的值,去除重复
现有3表
 表A
 GiftID GiftName GiftUnion 
 129 啤酒         瓶          
 130 棒棒糖        个          
 131 歌神         次          
 132 歌后         次          
 133 气球         个          
 134 巧克力        盒          
 135 欢迎         次          
 
表B
 ID UserIDTo GiftID  GiftNum 
 3017  111   120  1 100 
 3018  12346 120  1 100 
 3019  600030 120  1 100 
 3020  600096 120  1 100 
 3021  4444 120   100 
 3022  4567 120   100 
 3023  518 120   100 
 3024  1616 120   100 
 3025  2001 120  1 100 
 3026  123123 120  1 100 
 3027  123777 120  1 100 
 
表C
 UserID NickName 
 2003 2003 
 2004 2004 
 2005 2005 
 2006 2006 
 2007 2007 
 2008 2008 
 2009 2009 
 2010 2010 
 其中A.giftid=B.giftid,  B.useridto=C.userid
 自己乱写两个sql语句
 select top 8 sum(ug.GiftNum)as liwu,u.NickName,g.GiftName from UserGift as ug,Users as u,Gift as g where ug.UserIDFrom=u.UserID and ug.GiftID in (208,206,131,132,500,505,308,307) and ug.GiftID=g.GiftID group by u.NickName,g.GiftName order by liwu desc
 得到结果
 liwu  NickName    GiftName
 74841 xx 圣诞树       
 62884 xx 圣诞树       
 26853 xx 圣诞袜       
 19632 xx 圣诞袜       
 13141 xx 圣诞树       
 9999 xx 歌后        
 5527 xx 圣诞树       
 4539 xx 亲嘴        
 其中giftNum是数量、NickName是姓名、GiftName礼物名称、GiftID礼物ID
红色208,206,131,132,500,505,308,307 是指定礼物ID 我只要这8种礼物的查询结果

如上结果显示都是重复行,不是我想要的 8种不同礼物
------解决方案--------------------
试试:
 SELECT TOP 8
        SUM(ug.GiftNum) AS liwu ,
        u.NickName ,
    &nb