我想查询上周创建的 SO 新标签。我们有表格 Posts、Tags、PostTags(暂时忽略 TagSynonyms)。
标签没有 CreationDate 所以我们可能需要使用 join with min(Post.CreationDate)
last week = getdate() - 7
我想查询上周创建的 SO 新标签。我们有表格 Posts、Tags、PostTags(暂时忽略 TagSynonyms)。
标签没有 CreationDate 所以我们可能需要使用 join with min(Post.CreationDate)
last week = getdate() - 7
此查询将生成标签在过去一周创建的帖子列表。表JOIN
之间只是为了带来信息。该WHERE
条款将排除在 7 天之前使用过的标签。
子查询将生成过去使用的唯一标签 ID 列表。按照您上周的示例,该公式是使用该DATEDIFF
函数创建的。
SELECT PostTags.PostId, PostTags.TagId, Tags.TagName, Posts.CreationDate
FROM PostTags
JOIN Posts
ON PostTags.PostId = Posts.Id
JOIN Tags
ON PostTags.TagId = Tags.Id
WHERE PostTags.TagId NOT IN (
SELECT DISTINCT PostTags.TagId AS OlderTags
FROM PostTags
JOIN Posts
ON PostTags.PostId = Posts.Id
WHERE DATEDIFF(DAY, CreationDate, GETDATE()) > 7)