0

我想查询上周创建的 SO 新标签。我们有表格 Posts、Tags、PostTags(暂时忽略 TagSynonyms)。

标签没有 CreationDate 所以我们可能需要使用 join with min(Post.CreationDate)

last week = getdate() - 7
4

1 回答 1

0

此查询将生成标签在过去一周创建的帖子列表。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)
于 2020-08-06T16:47:22.967 回答