如何连接多个表而不依赖于LEFT或RIGHT join
示例:
t1
id | date
-----------
NULL NULL
t2
id | value
------------
1 | bla
SELECT date,value
FROM t2 LEFT JOIN t1
ON t1.id = t2.id where t2.id = 1
- 选择正常
使用右连接相同的查询返回空值...
答案 0 :(得分:2)
SELECT `date`, `value` FROM t2 FULL OUTER JOIN t1 ON t1.id = t2.id
编辑: 这将返回所有记录,即使这些加入字段没有匹配。抱歉,这会给您语法错误。请参阅下面的编辑。
如果您只想要匹配,请使用inner join
:
SELECT `date`, `value` FROM t2 INNER JOIN t1 ON t1.id = t2.id
编辑: MySQL中没有FULL OUTER JOIN
。您必须使用UNION
进行模拟并合并LEFT
和RIGHT
JOIN
:
SELECT `date`, `value` FROM t2 LEFT JOIN t1 ON t1.id = t2.id
UNION
SELECT `date`, `value` FROM t2 RIGHT JOIN t1 ON t1.id = t2.id
这也会返回您的NULL
值,但它们不会匹配,因为NULL != NULL
答案 1 :(得分:0)
您必须使用FULL OUTER JOIN语法。事实上,Left JOIN返回Left列中的所有结果,而right join返回右列中的所有结果。完全外部的两个都返回。
SELECT date,value FROM t2 FULL OUTER JOIN t1 ON t1.id = t2.id where t2.id = 1