如何将1个表与另外2个表连接起来

时间:2012-11-09 01:43:48

标签: mysql

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

我可以从t1t2检索所需的记录,然后检索t1t3的其他类似查询。我需要做的是在一个声明中做到这一点。

以下语句检索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检索记录。如何在一个声明中做到这一点?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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;