我有一個只有兩列,用於分配評論意見圖像。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