我想从 first_table 等于 first_table 中选择 first_table 中的 的值/ em>来自 third_table 的另一件事。第三个表中的最后一个值可能不存在!
我有以下mysql查询:
$query = "SELECT ft.value1, ft.value2, st.value3, st.value4, tt.valueWantedMightNotExist
FROM first_table ft, second_table st, third_table tt
WHERE ft.value5 = st.value5" AND ft.something = tt.anothersomething;
如果值存在,此查询将返回仅的结果。否则它什么也不返回。我用FULL JOIN
尝试了这个,但也结束了混乱。如果记录不存在,有人可以向我解释如何返回空值?非常感谢你......
答案 0 :(得分:3)
您需要LEFT JOIN
。这将完全符合您的要求。
默认情况下(即,如果你只使用逗号),你会得到一个INNER JOIN
,只有在两边匹配时才会给你行;但是LEFT JOIN
会给你左边的所有内容,而右边的空值则没有匹配。
还有一个RIGHT JOIN
,其目的留给精明的读者练习:)
你应该看看this question。排名最高的答案使用LEFT OUTER JOIN
,但至少在MySQL中,OUTER
没有效果。第二高的答案有一幅漂亮的图片,对直觉很有帮助。
答案 1 :(得分:1)
如果您想获得无匹配的行,则需要使用LEFT JOIN
。
SELECT ft.value1, ft.value2, st.value3, st.value4, tt.valueWantedMightNotExist
FROM first_table ft
INNER JOIN second_table st ON ft.value5 = st.value5
LEFT JOIN third_table tt ON ft.something = tt.anothersomething