我的数据库中有两个表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)
哪个不起作用,因为
只能在选择列表中指定一个表达式
那我该怎么办?
答案 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)