不确定我的标题是否很好地解释了它,所以这里有一个例子。我有两个 MYSQL 表,comments 和 votes_comments,它们根据字段 comment_id 匹配。对于示例数据,评论有两行,而 votes_comments 有一行与评论行之一匹配。AKA 写了两条评论,一个人对其中一条进行了投票 鉴于此,以下查询返回 2 行:
SELECT comments.*, users.username FROM comments
JOIN users ON users.user_id = comments.user_id
WHERE comments.track_id=6 AND comments.parent_id=-1
GROUP BY comments.comment_id
现在我想做的是加入可能有也可能没有匹配行的 votes_comments。我想要做的是获取匹配值(如果存在),或者如果没有匹配结果,则在列中返回 null 。又名:用户是否投票赞成、反对或根本不投票(空)。这是我修改后的查询:
SELECT comments.*, users.username, votes_comments.vote FROM comments
JOIN users ON users.user_id = comments.user_id
LEFT JOIN votes_comments ON votes_comments.comment_id = comments.comment_id
WHERE track_id=6 AND parent_id=-1 AND votes_comments.user_id=1
GROUP BY comments.comment_id
此查询仅返回一行,因为我在 votes_comments 中只有一行。我认为左连接会以我想要的方式返回结果,但显然不是。任何想法如何得到我正在寻找的东西?