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でLEFTJOINとRIGHTJOINを試しましたが、必要なものが得られません。それはかなり単純なはずですが、それは私には来ません...

4

2 に答える 2

2

多分あなたがしているときに何かを逃したLEFT JOIN。また、合体を使用して、最初のnull以外の値を返します。

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

1つの方法は、union allを使用してから、2番目の表に存在しないかどうかを確認することです。

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 に答える