1

大家好,这是我的架构: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,但我无法得到我需要的东西。它应该很简单,但它只是不来找我......

4

2 回答 2

2

也许你在做的时候错过了一些东西LEFT JOIN。也可以使用 coalesce 返回第一个非空值。

SELECT  t1.Age, COALESCE(t2.name, t1.Name) Name
FROM    t1 
        LEFT JOIN t2
            ON t1.Age = t2.Age
于 2013-02-11T16:45:36.743 回答
1

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

select *
from t1
union all
select *
from t2
where Not exists (select 1 from t1 where t1.age = t2.age)
于 2013-02-11T16:47:11.250 回答