MySQL连接查询帮助

MySQL连接查询帮助,mysql,select,join,left-join,inner-join,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表中获取标题,从vots表中获取当前的投票值 目前,除非进行投票,否则投票不会存储在投票表中。因此,所有投票数为0的帖子都不在投票表中 这会导致一个错误,即它试图获取标题和投票值,其中post id=投票值id。如果投票表中没有任何记录,则该值应返回N

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

mysql_query("SELECT n.title, v.value FROM posts n INNER JOIN votes v ON n.id = v.id");
我需要做的是从posts表中获取标题,从vots表中获取当前的投票值

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

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

如何在一个查询中解决此问题?我不想使用多个查询。。。
谢谢:)

使用左连接而不是内部连接

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

左联接(或使用其全名的左外部联接)选择左表中的所有行,然后从右表中匹配行,如果右表中没有匹配行,则返回空值,就像您要求的那样


(也有右外部联接,但通过更改ON子句中的条件可以实现相同的效果)

从posts中选择n.title,v.value作为n,投票作为v,其中n.id=v.id


试试看。

我知道多少!谢谢!这是我以前做过的,它以前工作过,所以默认情况下MySQL必须使用左连接。直到现在,当我重写查询时,我才决定使用内部连接,这会把一切都搞砸。谢谢:)请用另一种方式做。显式连接语法更容易理解,正如这里所证明的,并不总是清楚在这种语法中得到什么类型的连接。在其他SQL后端,您将无法获得所写的左连接。
SELECT n.title, v.value FROM posts n LEFT JOIN votes v ON n.id = v.id