1

我有三个表:t1, t2, t3。每个都有IDname列。在t2, 和t3中,添加后插入字段名称www.。我需要做的是:从中选择所有t1不在t2or中的记录t3

t1我可以从and中检索所需的记录,然后对andt2进行另一个类似的查询。我需要做的是在一份声明中做到这一点。t1t3

以下语句用于检索 int2但不在 in的名称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 检索记录也进行了类似的操作。如何在一个声明中做到这一点?

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 回答