检查计数中的唯一值,但获得所有结果

时间:2010-05-30 01:22:31

标签: mysql count

我正在尝试创建一个类似于堆栈溢出的单个查询,它将为我提供投票数,但也要确保当前查看的用户如果已经投票,则无法再次投票。

我的查询目前看起来像

SELECT cid, text, COUNT(votes.parentid)  FROM comments LEFT JOIN votes ON comments.cid=votes.parentid AND votes.type=3 WHERE comments.type=0 AND comments.parentid='$commentParentid' GROUP BY comments.cid

但我完全不知道如何添加支票以查看用户ID是否在投票表中。

另一个选项是添加单独的查询

SELECT COUNT(*) FROM votes WHERE userid='$userid' AND parentid='$commentParentid' AND type=3

我只是意识到自己已经迷失了,我甚至不知道要提供什么标签。

1 个答案:

答案 0 :(得分:1)

SELECT cid, text, COUNT(votes.parentid), 
    COUNT(IF(votes.userid='$userid',1,NULL)) = 0 AS can_vote
FROM comments 
LEFT JOIN votes ON comments.cid=votes.parentid AND votes.type=3 
WHERE comments.type=0 AND comments.parentid='$commentParentid' 
GROUP BY comments.cid

如果您坚持在SQL中执行此操作,则应根据用户对评论进行投票的次数为您提供标记can_vote