【问题标题】:MySQL records count with conditionMySQL记录计数条件
【发布时间】:2010-09-20 17:02:51
【问题描述】:

我需要获取投票>=5 的表 «posts» 的记录数以创建分页。

表格:

表«posts»:user_id、post_n、可见性、类型

可见度值:0、1、2; type values: 'text', 'photo' ...(它是枚举字段,有 6 个值)

表«votes»:vote_n、post_n、voter_id、vote

投票值:-1 或 1

查询:

SELECT post_n, (SELECT SUM(vote) FROM votes WHERE votes.post_n=posts.post_n)AS votes
FROM posts WHERE visibility=2 AND type='text' HAVING votes>=5

时间 0.4039

可以优化吗?

【问题讨论】:

    标签: mysql optimization


    【解决方案1】:

    我认为没有子查询你会得到更好的结果。你可以使用GROUP BY:

    SELECT p.post_n AS post_n, SUM(v.vote) AS votes
    FROM posts p
    INNER JOIN votes v ON (v.post_n = p.post_n)
    WHERE p.visibility = 2 AND p.type = 'text'
    GROUP BY p.post_n
    HAVING SUM(v.vote) >= 5
    

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 2011-09-26
      相关资源
      最近更新 更多