1

t1t2、 の3 つのテーブルがありt3ます。それぞれIDに列がありnameます。t2、 、ではt3、 を追加した後にフィールド名が挿入されwww.ます。私がする必要があるのは、またはt1にないすべてのレコードを選択することです。t2t3

と から必要なレコードを取得してからt1t2と に対する別の同様のクエリをt1取得できましたt3。私がする必要があるのは、これを 1 つのステートメントで行うことです。

t2に含まれているが含まれていない名前を取得する次のステートメントt1:

select t1.name
from db.t1
LEFT JOIN db.t2 ON 
t2.name = concat('www.',t1.name) 
WHERE t2.name IS NULL;

t1 と t3 からレコードを取得するために、同様のことが行われます。これを1つのステートメントで作成する方法は?

4

2 に答える 2

2

使ってみるUNION

select  t1.name
from    db.t1
        LEFT JOIN 
        (
            SELECT name FROM t2
            UNION 
            SELECT name FROM t3
        )   t ON t.name = concat('www.',t1.name) 
WHERE t2.name IS NULL;

またはLEFT JOINまだ)を使用して

select  t1.name
from    db.t1
        LEFT JOIN db.t2 
            ON  t2.name = concat('www.',t1.name) 
        LEFT JOIN db.t3 
            ON  t3.name = concat('www.',t1.name) 
WHERE t2.name IS NULL AND 
        t3.name IS NULL;
于 2012-11-09T01:46:13.060 に答える
0

別の結合を追加するだけです

select t1.name
from db.t1
LEFT JOIN db.t2 ON 
t2.name = concat('www.',t1.name) 
LEFT JOIN db.t3 ON 
t3.name = concat('www.',t1.name) 
WHERE t2.name IS NULL and t3.name IS NULL;
于 2012-11-09T01:46:22.123 に答える