我正在尝试做一个相当复杂的(对于我来说,至少)查询,涉及获取可能具有NULL
值的行。MySQL与NULL值联接
这里有四个表,tags
,questions_tags
,users_experience
和answers
。连接相当简单。问题被标记,标签有名称,用户给出问题的答案,用户有特定标签的经验。我想找到用户提供的答案,以及他们的经验(可能为NULL
)。我按照特定标签给出的答案数排序。
我的查询如下。这是不是在所有优化(如果你有优化建议,请建议走!):
SELECT t.tag_id, t.name, ue.body, COUNT(a.qid)
FROM tags AS t
LEFT JOIN users_experience AS ue
ON t.tag_id = ue.tag_id
LEFT JOIN questions_tags AS qt
ON qt.tag_id = t.tag_id
LEFT JOIN answers AS a
ON a.qid = qt.qid
WHERE a.uid=1
GROUP BY t.tag_id
ORDER BY COUNT(a.qid) DESC;
我面对上述查询的问题是,如果有人已经指出特定标签的经验,这将显示给用户是否是他们的经验。我想只看到特定用户的体验,这个查询只是没有做到。我在其他地方遇到过这个问题并被困住了,所以不得不绕过它。
我试着在查询中添加AND ue.uid = 1
,但这样会限制只有已经给出经验的人的结果,并且不会返回我期望的NULL
值。
想怎么做?
真棒,谢谢! – 2010-11-17 22:41:30