【发布时间】:2020-03-28 14:45:54
【问题描述】:
我不知道这是否可以仅使用 SQL 来完成。我目前拥有所有论坛最新主题的 SQL。我需要一个热门话题版本。
从今天开始的顺序将是 20 个主题,其中回复最多的主题按回复最多的顺序排列在顶部。然后昨天和前一天等,直到最多检索到 2000 个主题。我不知道如何或是否可以做到这一点
顺便说一句,这是针对 SQL Server 的。
今天
replies 100
replies 80
replies 70
etc
昨天
replies 100
replies 80
replies 70
etc
等等,总共最多 2000 个主题
这里是当前最新的主题SQL:
存储过程定义:
CREATE PROCEDURE [dbo].[SPTopicsGetHot]
@UserGroupId int = NULL
AS
/*
Gets the latest messages in all forums
*/
SELECT TOP 200
T.TopicId
,T.TopicTitle
,T.TopicShortName
,T.TopicDescription
,T.TopicCreationDate
,T.TopicViews
,T.TopicReplies
,T.UserId
,T.TopicIsClose
,T.TopicOrder
,T.LastMessageId
,T.UserName
,T.ForumId
,M.MessageCreationDate
,M.UserId AS MessageUserId
,MU.UserName AS MessageUserName
,F.ForumName
,F.ForumShortName
FROM
TopicsComplete T
LEFT JOIN
Messages M ON M.TopicId = T.TopicId
AND M.MessageId = T.LastMessageId AND M.Active = 1
LEFT JOIN
Users MU ON MU.UserId = M.UserId
LEFT JOIN
Forums F ON F.ForumId = T.ForumId
WHERE
ISNULL(T.ReadAccessGroupId,-1) <= ISNULL(@UserGroupId,-1)
ORDER BY
T.TopicId DESC
【问题讨论】:
-
请用您正在使用的数据库标记您的问题。
-
帮助我们帮助您 - 请分享表格结构
标签: sql sql-server tsql join group-by