MySQL加入查询帮助

时间:2009-01-23 00:01:09

标签: mysql select join left-join inner-join

基本上我有一个类似于以下内容的mysql查询:

mysql_query("SELECT n.title, v.value FROM posts n INNER JOIN votes v ON n.id = v.id");

我需要做的是从posts表中获取标题,从投票表中获取当前的投票值。

目前,除非进行投票,否则投票不会存入投票表。因此,所有0票的帖子都不在投票表中。

这会导致错误,即它试图获得标题和投票值,其中post id =投票值id。如果在投票表中没有任何记录,那么值应该返回NULL或0但是此时整个查询返回为null,所以我甚至无法返回标题。

如何在一个查询中修复此问题?我不想要使用多个查询... 谢谢:))

3 个答案:

答案 0 :(得分:4)

使用左连接而不是内连接

内部联接需要匹配联接两侧表格中的行。

左连接(或左外连接使用其全名)选择左表中的所有行,然后匹配右边的行,如果右表中没有匹配的行,则返回空值,就像你一样正在要求。

(也有正确的外连接,但通过改变ON子句中的条件可以实现相同的效果)

答案 1 :(得分:0)

SELECT n.title, v.value FROM posts n LEFT JOIN votes v ON n.id = v.id

答案 2 :(得分:-2)

SELECT n.title,v.value FROM posts as n,vote as v WHERE n.id = v.id

试试。