MySQL JOIN只返回几行中的一行

时间:2014-04-25 03:05:28

标签: php mysql sql

我有两张桌子:问题和答案

它是关系型的,因此答案中有一个名为question的列,它直接对应questions列中的行。我有以下查询:

SELECT questions.id,
       questions.question,
       questions.author,
       questions.date,
       answers.answer,
       answers.user,
       answers.datetime
FROM questions
INNER JOIN answers ON questions.id = answers.question
WHERE tag IN (:arrayIDs)

有3个问题,但只有一个答案与问题相符。

但是,这个MySQL字符串只返回一个问题而不是所有问题。

如何检索所有匹配的问题(如果我使用SELECT子句进行简单的WHERE查询,这仍然会返回1个以上的问题)以及答案?< / p>

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您正在使用INNER JOIN,它只会为您提供Question记录能够加入答案记录的记录。将其更改为LEFT OUTER JOIN,您应该得到我认为您期望的结果。 LEFT OUTER JOIN将始终为您提供第一个表中的所有记录 - 以及可能的第二个表中的记录。

答案 1 :(得分:2)

试试这个,LEFT JOIN会在没有答案的情况下为您提供所有问题:

SELECT questions.id,
       questions.question,
       questions.author,
       questions.date,
       answers.answer,
       answers.user,
       answers.datetime
FROM questions
LEFT JOIN answers ON questions.id = answers.question
WHERE tag IN (:arrayIDs)

查看SQL JOINs