1

初心者の質問です。私は次のようなことをしたい:

SELECT c1,c2,c3 FROM TABLE t1
UNION
SELECT c1,c2,c3 FROM TABLE t2 WHERE t1.c1 IS NOT NULL AND t1.c2 IS NULL;

私がt1を持っている場合:

c1|c2|c3
1 | a|v1
2 | b|v2

と t2:

c1|c2|c3
1 | a|v3
2 | b|v4
2 | c|v5
3 | d|v6

私は得るでしょう:

c1|c2|c3
1 | a|v1
2 | b|v2
2 | c|v5

誰でもこれを行う方法を知っていますか?

4

3 に答える 3

2

SQL Docs によると、JOINより高速ですSubQueries。これを試して:

 SELECT c1, c2, c3
 FROM   t1
 UNION
 SELECT b.c1, b.c2, b.c3
 FROM   t1 a inner join t2 b ON
         (a.c1 = b.c1) and (a.c1 = b.c1)
 WHERE  (b.c1,b.c2) NOT IN (SELECT c1,c2 FROM t1)

証明するには、ここを参照してください: http://sqlfiddle.com/#!2/50a4e/23

于 2012-05-10T05:24:54.230 に答える
2

クエリは次のようになります。ただし、どれだけ効率的かはわかりません。

SELECT 
    T1.c1,
    T1.c2,
    T1.c3
FROM T1
UNION     
SELECT 
    T2.c1,
    T2.c2,
    T2.c3
FROM T2 
WHERE ((T2.c1,T2.c2) NOT IN (SELECT t1.c1,t1.c2 FROM t1)) AND 
(T2.c1 IN (SELECT t1.c1 FROM t1))
于 2012-05-10T05:18:59.453 に答える
0
select t2.c1,t2.c2,t2.c3 
from t1,t2 
where t1.c1=t2.c2;
于 2012-05-10T05:30:57.037 に答える