查询问题

时间:2011-09-21 11:48:52

标签: sql-server

我的数据库中有两个表saveimage,其中包含每个图像的id和url score,其中包含每个图像的ID和得分,此得分不唯一 - 得分表中的每一行都是用户对图像的评分,因此一个图像可能有几行得分。

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

我试过

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

哪个不起作用,因为

  

只能在选择列表中指定一个表达式

那我该怎么办?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)