【发布时间】:2020-09-26 15:29:24
【问题描述】:
我一直在使用 mysql 查询来查找在过去 10 天内没有针对任何帖子发布任何 cmets 的用户。 我在下面写了这样的东西。但找不到预期的结果。
我有三个表用户、帖子、评论。
SELECT * FROM users AS u
LEFT JOIN posts AS p ON u.userID = p.postID
LEFT JOIN comments AS c ON p.postID = c.postID
group by p.p.postID
having (max(t.addedDate) < DATE_SUB(NOW(), INTERVAL 10 DAY));
此查询仍返回我在过去 10 天内发布 cmets 的用户。不知道我在这里做错了什么。如果有人可以在这里帮助我?
【问题讨论】:
-
请提供样本数据和期望的结果。
having子句中有别名t,from子句中没有这样的表。另外,加入条件u.userID = p.postID对我来说似乎很可疑。 -
这里没有什么可疑的。我之前只是给出了不同的别名,并对其进行了更改以使其在此处具有相关性,而忘记在有子句中进行更新。这是更新版本: SELECT * FROM users AS u LEFT JOIN posts AS p ON u.userID = p.userID LEFT JOIN cmets AS c ON p.postID = c.postID group by p.p.postID with (max(c. addedDate)
-
这里的逻辑是完全错误的。首先,您不需要
users - posts关系。您应该拥有并使用users - comments关系。其次,尝试使用 SQLnot exists或not in运算符解决您的问题。