mysql - mysql查询返回受WHERE子句限制的内连接数

标签 mysql sql

我有以下查询来尝试计算帖子发布后 30 分钟内发表的评论数。有两个表,postscomments,它们是在 posts.idcomments 上进行 INNER JOIN 的.post_id 像这样:

SELECT id, count(post_id) as num_comm from posts
  INNER JOIN comments on id = post_id
  WHERE (UNIX_TIMESTAMP(posts.time_posted) - UNIX_TIMESTAMP(comments.time_posted)) < (30 * 60)
    AND comments.reply_to_id = 0
  GROUP BY id
  ORDER BY num_comm ASC;

我遇到的问题是,查询返回的是 num_comm 结果的总数,而不仅仅是原始帖子发布后 30 分钟内发表的评论的数量comments.reply_to_id 设置为 0。

如何更改查询以仅返回满足 WHERE 子句中条件的评论数量?

最佳答案

据推测,该帖子是在评论之前发布的。所以,你的值(value)永远是负数。尝试:

SELECT id, count(*) as num_comm 
FROM posts p INNER JOIN
     comments c
     ON p.id = c.post_id
WHERE (UNIX_TIMESTAMP(c.time_posted) - UNIX_TIMESTAMP(p.time_posted)) < (30 * 60) AND
      c.reply_to_id = 0
GROUP BY p.id
ORDER BY num_comm ASC;

我不太喜欢转换为 Unix 时间戳。我认为代码更清晰:

WHERE c.time_posted < p.time_posted + interval 30 minute AND
      c.reply_to_id = 0

关于mysql - mysql查询返回受WHERE子句限制的内连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939060/

相关文章:

mysql - 从一个表获取数据并统计另一表的匹配记录

php - 运行 .ics 脚本时出现错误消息?

mysql - 有GROUP_CONCAT,有没有GROUP_SUM?

mysql - sql选择总和计数变量

php - 在 PHP/MySQL 中表示一组条件调查表

sql - 维护sql插入记录

android - 实现从服务器到 Android 来回同步数据的最佳实践(架构级别)

SQL查询根据其他字段统计有多少个值

Mysql根据其他2条记录的值更改单元格值

结果集上的 SQL SUM (DISTINCT ...)