组合多个表

时间:2011-03-15 19:55:35

标签: mysql

Table1: ID,Name,some more columns
Table2: ID
Table3: Name

我想从table1获取输出,其ID在Table2.IDs&其名称出现在Table3.Name。

换句话说,选择所有3个表中都存在的数据。

例如:

表1:

1 John
2 Will
3 Michael

表2:

1

表3:

Will

输出应为

1 John
2 Will

2 个答案:

答案 0 :(得分:2)

您需要使用JOIN。

您的说明和示例输出不匹配,因此我将为您提供一个示例。

根据您的描述,它应为2 INNER JOIN:

select table1.id, table1.name
from table1
inner join table2 on table2.id = table1.id
inner join table3 on table3.name = table1.name

根据你的输出,它应该是2 OUTER JOINS,WHERE子句指定满足2个连接中的至少一个:

select table1.id, table1.name
from table1
left outer join table2 on table2.id = table1.id
left outer join table3 on table3.name = table1.name
where table2.id is not null or table3.name is not null

答案 1 :(得分:0)

根据您的预期结果,看起来您希望Table1中的行与Table2或Table3匹配,因此您需要使用LEFT JOIN。

select t1.ID, t1.Name
    from Table1 t1
        left join Table2 t2
            on t1.ID = t2.ID
        left join table3 t3
            on t1.Name = t3.Name
    where t2.ID is not null 
        or t3.Name is not null