忽略没有匹配的表

时间:2011-12-09 18:51:37

标签: mysql sql

我想知道如果该表中没有匹配但显示其他表的匹配,是否可以使查询忽略表? 假设我有三个表,我使用这样的查询:

SELECT table1.username, table2.age, table3.something_else FROM table1, table2, table3 
WHERE (table1.id = 37)
AND (table2.id = table1.id)
AND (table3.id = table1.id)

所以如果id存在于所有表中,但是如果其中一个表中不存在id,则查询将不会返回任何值。如果我将返回id存在的列,我将如何编写查询?

1 个答案:

答案 0 :(得分:3)

使用LEFT JOIN

例如

SELECT table1.username, table2.age, table3.something_else
FROM table1
LEFT JOIN table2 ON (table2.id = table1.id)
LEFT JOIN table3 ON (table3.id = table1.id)
WHERE (table1.id = 37)

当您使用逗号包含其他表时,您正在执行隐式JOIN,但它是内连接。

阅读JOIN here

与此同时,这是一个很好的摘要图片:

Visual description of join types