我通过以这种方式将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
的查询来实现。
答案 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';