2012-03-08 39 views
0

我如何加入不依赖于LEFT多个表或右连接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 

- 选择是确定

与右连接同一查询返回空值...

回答

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模拟,并结合了LEFTRIGHTJOIN

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

+0

我终于混有表连接,在那里我肯定ID存在...... 是的全外连接mysql中http://www.xaprb.com/blog/2006/05/26不支持/如何到写全外连接,在MySQL的/ – mort 2012-03-08 22:40:21

0

您必须使用FULL OUTER JOIN synstax 。事实上,左连接返回左列中的所有结果,而右连接返回右列中的所有结果。完全外在,所有都返回。

SELECT date,value FROM t2 FULL OUTER JOIN t1 ON t1.id = t2.id where t2.id = 1 
相关问题