我目前正在成功地合并两个表并加入第三个表。
select col1,col2
from table1
union
select col1,col2
from table2
join(select distinct(id), date from table3) on table3.id = table2.id
我怎么只合并table1和table2,其中table1.col3在table2.id中?
换句话说,如果table1.col3中有一个值,我想从table2.id匹配的table2中获取所有数据,并合并表。
编辑:
table1 (source table) table2 table3
id col1 col2 id col1 col2 id date col4
注意:table1和table2完全相同,所以我选择并集。
答案 0 :(得分:2)
您请求的UNION
实际上使查询相当简单,因为它可以根据您的需求通过3个独立的简单查询来构建;
SELECT col1, col2 FROM table2
UNION ALL
SELECT col1, col2 FROM table1 WHERE id IN (SELECT col1 FROM table2)
UNION ALL
SELECT col1, col2 FROM table1 WHERE id IN (SELECT id FROM table3 WHERE date >= '2018-12-01')
请注意,UNION ALL
允许重复(每次查询可能单行显示一次),而更改为UNION
将删除所有重复项。