【发布时间】:2014-03-30 01:21:51
【问题描述】:
我的网站包含用户可以投票的内容片段(喜欢/不喜欢类似于 reddit upvotes)。在选择单个内容时,我运行以下子查询来获取喜欢的数量、不喜欢的数量和当前用户的投票。
投票存储在单独的表中 {contentId, userId, vote}
SELECT
[... BUNCH OF FIELDS ...]
(SELECT COUNT(*) FROM votes vt WHERE vt.cId = c.contentId AND vote = '.Constants::LIKE.') AS likes,
(SELECT COUNT(*) FROM votes vt WHERE vt.cId = c.contentId AND vote = '.Constants::DISLIKE.') AS dislikes,
COALESCE((SELECT vote FROM votes vt WHERE vt.cId = c.contentId AND userId = '.USER_ID.'), '.Constants::NO_VOTE.') AS myVote
FROM content
[... OTHER STUFF ... ]
有没有更好的方法来实现这一点(组合这些子查询或其他方式)?
【问题讨论】:
-
这个问题在Code Review上可能会更好
标签: mysql sql optimization count subquery