在 Stackoverflow 上的某个人的帮助下,我几乎达到了完美查询的地步。我需要一些帮助来调整查询以满足我的需要,我希望有人可以再次帮助我。
情况就是这样,我有以下 2 个表:
Tweet
和
Tweet_tags
每条推文都有一个标签,一条推文可以有更多相同的标签。我想计算自发布推文以来的一周内有多少推文具有相同的标签。
这是现在的查询:
SELECT t.id
, s.tag
, ( SELECT COUNT(1)
FROM twitter.tweet_tags r
JOIN twitter.tweet q
ON q.id = r.tweet_id
WHERE r.tag = s.tag
AND q.date >= t.date
AND q.date <= t.date + INTERVAL 7 DAY
) AS cnt
FROM twitter.tweet t
JOIN twitter.tweet_tags s
ON s.tweet_id = t.id
ORDER
BY cnt DESC
此查询的结果是:
| ID | Tag | Cnt |
-------------------------------
| 1 | Testtag | 2 |
| 2 | Testtag | 1 |
| 3 | tweettag3 | 1 |
| 4 | tweettag2 | 1 |
我的数据库中有 2 次 testtag,所以第一个结果是正确的,tweettag3 和 tweettag2 在我的数据库中有 1 次,所以这也很好,但是当我再次添加它们时,它们可能也会显示多个结果。我尝试使用DISTINCT
ons.tag
来消除重复的结果,但这给了我一个语法错误。
所以我希望它是:
| ID | Tag | Cnt |
-------------------------------
| 1 | Testtag | 2 |
| 2 | tweettag3 | 1 |
| 3 | tweettag2 | 1 |
有人可以帮我解决这个问题吗?如果您需要更多信息,请说出来!
谢谢 !!
编辑 :
这是表格的外观:
Tweet
---------------
ID
Message
users_id
Date
Tweet_tags
---------------
id
tag
tweet_id