Py学习  »  DATABASE

mysql left join返回意外结果

Supun Kavinda • 5 年前 • 1499 次点击  

我有两张桌子 talk_comments talk_comment_votes .

我运行以下代码来选择, commentId , numberOfUpvotes , whetherUserUpvoted , numberOfDownvotes , whetherUserDownvoted 使用左连接到同一个表。

SELECT c.id, COUNT(v1.id) as upvotes, COUNT(v2.id) as userUpvoted, COUNT(v3.id) as downvotes, COUNT(v4.id) as userDownvoted FROM talk_comments c
    LEFT JOIN talk_comment_votes v1 ON v1.comment_id = c.id AND v1.status = 1 
    LEFT JOIN talk_comment_votes v2 ON v2.comment_id = c.id AND v2.status = 1 AND v2.user_id = 1 AND v2.is_anonymous = 0
    LEFT JOIN talk_comment_votes v3 ON c.id = v3.comment_id AND v3.status = 2
    LEFT JOIN talk_comment_votes v4 ON c.id = v4.comment_id AND v4.status = 2 AND v4.user_id = 1 AND v4.is_anonymous = 0
WHERE c.id = 2 GROUP BY c.id

我的演讲评论投票表中有以下数据

phpMyAdmin database screenshot

因此,根据查询,它应该选择值 2,2,0,1,1 分别是。当我断开这些连接语句并执行查询时,它将返回预期的结果。但是,对于连接,它返回如下内容。

phpMyAdmin table results

我能帮你修一下吗?

谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43076
 
1499 次点击  
文章 [ 2 ]  |  最新文章 5 年前