我如何联接不依赖于LEFT或RIGHT联接的多个表

例:

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


-选择还可以

与右联接相同的查询返回空值...

最佳答案

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模拟它,并将LEFTRIGHT 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

10-07 19:33
查看更多