我想知道如果该表中没有匹配但显示其他表的匹配,是否可以使查询忽略表? 假设我有三个表,我使用这样的查询:
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存在的列,我将如何编写查询?
答案 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
与此同时,这是一个很好的摘要图片: