如果记录不存在mysql,请选择null

时间:2014-12-23 12:43:23

标签: mysql

我想从 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尝试了这个,但也结束了混乱。如果记录不存在,有人可以向我解释如何返回空值?非常感谢你......

2 个答案:

答案 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