【发布时间】:2012-06-07 15:53:59
【问题描述】:
我有一个包含字段user_id 和votes 的表。 votes 字段要么是 1 赞成票,要么是 0 反对票。
我想做的是在一个查询中为特定用户显示总赞成票和总反对票。
我在想我可以使用GROUP BY 以某种方式实现这一点,但我不知道我是否可以以某种方式将它与SUM 函数一起使用?
【问题讨论】:
我有一个包含字段user_id 和votes 的表。 votes 字段要么是 1 赞成票,要么是 0 反对票。
我想做的是在一个查询中为特定用户显示总赞成票和总反对票。
我在想我可以使用GROUP BY 以某种方式实现这一点,但我不知道我是否可以以某种方式将它与SUM 函数一起使用?
【问题讨论】:
GROUP BY 仅在您想要多个用户的投票计数时才需要;对于单个用户,只需指定一个WHERE 子句:
SELECT SUM(votes=1) AS upvotes, SUM(votes=0) AS downvotes
FROM my_table
WHERE user_id = ?
顺便说一句,您可能需要考虑将反对票存储为-1(而不是0),以便可以轻松地将净投票数计算为SUM(votes)。
【讨论】: