在单个查询中将表连接到另外两个表

时间:2015-08-23 10:18:10

标签: mysql join

我通过以这种方式将table_a加入table_b来获取select ta.* from table_a as ta inner join table_b as tb on ta.first_column=tb.first_column where tb.second_column='myvalue'; 的行:

table_a

我通过以这种方式将table_c加入select ta.* from table_a as ta inner join table_c as tc on ta.first_column=tc.first_column where tc.second_column='myvalue'; 来获取table_a的行:

table_b

如何构建单个查询以获取上述查询的所有行(即上述查询的结果联合)?

我不希望联盟本身,而是通过形成一个将table_c加入-y-pass 1的查询来实现。

1 个答案:

答案 0 :(得分:2)

您可以在同一查询中执行多个联接。

select ta.*,tb.*,tc.* from table_a as ta 
inner join table_b as tb on ta.first_column=tb.first_column 
inner join table_c as tc on ta.first_column=tc.first_column 
where tc.second_column='myvalue' and tb.second_column='myvalue';

如果你想要同时为表(b和c)的second_column为'myvalue'的所有记录,你将使用上面的查询与where子句中的and连接。

否则,如果你想要至少有一个表(b或c)的second_column为'myvalue'的记录,你将用and替换or cojunction。

<小时/> 的更新 如果你不想只是你所描述的table_b和table_c中first_column常见的行,请尝试:

select distinct ta.* from table_a as ta 
left join table_b as tb on ta.first_column=tb.first_column 
left join table_c as tc on ta.first_column=tc.first_column 
where tc.second_column='myvalue' or tb.second_column='myvalue';