我有一个只有两列,用于分配评论意见图像。SQL Server:问题与选择和计数在小查询
第一列包含图像ID,第二列包含关联的评论ID。 图片可以有多个评论,但每个评论都有唯一的评论ID。
基于此,我希望得到一个排名降序的基础上评论数每个图像,所以最多的意见应该出现在最上面的图像。
我尝试了以下,但SQL不接受Distinct和XML的组合。 这里使用Distinct的想法是摆脱重复,因为我只想要每个图像在结果中出现一次。
有人能告诉我如何实现这一目标吗?
我的SQL:
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT Top 20 A.imgID,
COUNT(*) OVER() AS volume,
(
SELECT B.commentID,
COUNT(*) OVER() AS volume
FROM MOC_ImgComments B
WHERE B.imgID = A.imgID
FOR XML PATH(''), ELEMENTS, TYPE
)
FROM MOC_ImgComments A
ORDER BY volume desc, A.imgID
FOR XML PATH('images'), ELEMENTS, TYPE, ROOT('ranks')
END
非常感谢您的帮助,蒂姆。
您需要将a.imgID添加到您的主查询中。您也可能希望通过添加到您的子查询来控制订单。 – 2014-08-27 13:15:09
谢谢!关于子查询,我想我可以跳过Order By,因为我只需要那里的音量。对于主要查询,我是否需要通过img ID进行分组,这就是它? – user2571510 2014-08-27 13:16:51