【发布时间】:2012-04-10 06:23:55
【问题描述】:
不确定我的标题是否很好地解释了它,所以这里有一个例子。我有两个 MYSQL 表 cmets 和 votes_cmets,它们根据字段 comment_id 进行匹配。对于样本数据,cmets 有两行,而 votes_cmets 有一行与 cmets 行之一匹配。 AKA 编写了两个 cmets,一个人对其中一个进行了投票 鉴于此,以下查询返回 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_cmets。我想要做的是获取匹配值(如果存在),或者如果没有匹配结果,则在列中返回 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_cmets 中只有一行。我认为左连接会以我想要的方式返回结果,但显然不是。任何想法如何得到我正在寻找的东西?
【问题讨论】:
-
不清楚你想要得到什么结果。你能写出你做示例查询的表的文本输出,以及你希望返回的表吗?