加入 - 获得一个完整的表和另一个的全部表

时间:2013-02-11 16:43:32

标签: sql oracle join

嗨,大家好,我的架构是http://sqlfiddle.com/#!4/82771

CREATE TABLE t1
(
Age INT,
 Name VARCHAR(20)
);

CREATE TABLE t2
(
 Age INT,
 Name VARCHAR(20)
);

INSERT INTO t1(Age, Name) VALUES(31, NULL);
INSERT INTO t1(Age, Name) VALUES(32, NULL);
INSERT INTO t1(Age, Name) VALUES(33, NULL);
INSERT INTO t1(Age, Name) VALUES(34, NULL);

INSERT INTO t2(Age, Name) VALUES(31, 'Panos');

我需要一个Join查询,它会给我这个结果:

Age    Name
31    'Panos'
32     Null
33     Null
34     Null

我在Age上尝试了LEFT JOIN和RIGHT JOIN,但我无法得到我需要的东西。它应该很简单,但它不会来找我......

2 个答案:

答案 0 :(得分:2)

也许你在做LEFT JOIN时错过了什么。使用cowellce也可以返回第一个非null 值。

SELECT  t1.Age, COALESCE(t2.name, t1.Name) Name
FROM    t1 
        LEFT JOIN t2
            ON t1.Age = t2.Age

答案 1 :(得分:1)

一种方法是使用union all,然后在第二个表中检查是否存在:

select *
from t1
union all
select *
from t2
where Not exists (select 1 from t1 where t1.age = t2.age)