2011-09-21 83 views
0

我在我的数据库中的两个表的第一saveimage包含其中包含ID和每个图像的得分这个分数不是唯一的每个图像第二score的标识和网址 - 在得分表中每一行是用户等级的图像所以一个图像可能有几个分数的行。问题查询

现在我想找到得分最高的图像数据库

我试图

select * from saveimage 
where saveimage.id in (select top 100 id,SUM(avgscore) 
         from score 
         group by id 
         order by SUM(avgscore) desc) 

这是不工作,因为

只有一个表达式可以在选择列表中指定

那么我该怎么办?

回答

2

这应该工作:

SELECT TOP 100 img.id, 
     img.url, 
     SUM(sc.avgscore) as totalScore 
FROM saveimage img 
INNER JOIN score sc 
ON img.id = sc.id 
GROUP BY img.id, img.url 
ORDER BY SUM(sc.avgscore) DESC 
+0

这工作太! – MattW

+0

thx工作很好 –

1

你的子查询中不能有2列(你有id和sum(avgscore))。

如果你正在努力寻找每幅图像的顶部100分,尝试这样的事情:

select * 
from saveimage 
where saveimage.id in 
    (select top 100 id 
    from score 
    group by id 
    order by SUM(avgscore) desc)