无法解决此SQL查询结果

Chu*_*d37 1 mysql sql

我似乎无法解决原因:

SELECT `Title`.`Title`, `FirstName`, `LastName`, `Address1`, `Address2`, `Town`.`Town`, `County`.`County`, `PostalCode`, `Phone1`, `Solo` 
FROM `Person` 
JOIN `Title` ON `Person`.`Title` = `Title`.`id` 
JOIN `Town` ON `Person`.`Town` = `Town`.`id` 
JOIN `County` ON `Person`.`County` = `County`.`id` 
WHERE `Person`.`Solo`='1' 
ORDER BY `LastName` ASC;
Run Code Online (Sandbox Code Playgroud)

返回0结果,(它不应该,至少有5个结果,其中Solo='1')

如果我修改它,取出所有JOINS:

SELECT `Title`, `FirstName`, `LastName`, `Address1`, `Address2`, `Town`, `County`, `PostalCode`, `Phone1`, `Solo` 
FROM `Person` 
WHERE `Person`.`Solo`='1' 
ORDER BY `LastName` ASC;
Run Code Online (Sandbox Code Playgroud)

我得到结果?如果我修改它取出WHERE Person.Solo='1'它也给我结果,但只有2; 在哪里,它应该返回所有行?谁能解释一下?

:)

注意:Solo是一个tinyint,它在所有记录中都等于0或1!

Val*_*cev 6

你的连接是严格的,这意味着如果Person没有Title Town Country则不予退还.即使删除整个WHERE子句,也不会得到任何结果.

试试吧LEFT JOIN.

这是对不同类型的连接如何工作的一个很好的解释:SQL连接的可视化解释