我有两个表格模式:
Votes.value
可以是-1
或1
。
要获得各自评分的所有评论,我会进行简单的小组查询:
SELECT comments.*, SUM(votes.value) as score
FROM comments
LEFT JOIN votes on comments.comment_id = votes.comment_id
GROUP BY comments.comment_id
此请求可以由任何用户执行,我有user_id
的变量。
如何选择列my_vote
以获得用户投票的价值,或null
如果用户未投票?
注意:
考虑一下stackoverflow,用户可以对每个答案进行投票/投票,每个用户都可以看到他是投票还是投票。
修改
我找到了解决方案 -
SUM(IF(user_id = $user_id, value, NULL)) as my_vote
答案 0 :(得分:0)
我会使用以下内容:
SELECT c.*, SUM(v.value) as score,
GROUP_CONCAT(CASE WHEN v.user_id = $user_id THEN value END) as my_vote
FROM comments c LEFT JOIN
votes v
on c.comment_id = v.comment_id
GROUP BY c.comment_id;
这使用MySQL简写,将布尔表达式视为数字上下文中的数字。
答案 1 :(得分:0)
一个非常优雅的解决方案是:
SUM(IF(user_id = $user_id, value, NULL)) as my_vote