在oracle查询中,仅选择带有并集的几列

san*_*tro 0 sql oracle

我有两个类似这样的表:

表格1:

COL_A (int), COL_B (float), COL_C (float)

表_2:

COL_A (int), COL_B (varchar), COL_C (varchar)

我的查询使用 UNION 从表 2 中仅获取 COL_A(int)

SELECT COL_A, COL_B, COL_C FROM table1 UNION 
SELECT COL_A               FROM table2
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误。我们如何得到结果?

The*_*ler 5

a 的所有子查询成员UNION必须具有相同的列数和类型。在您的情况下,第一个子查询有三列,但第二个子查询只有一列。

解决方案:用空值填充第二个子查询。

例如:

select COL_A, COL_B, COL_C from table1
union 
select COL_A, null, null from table2
Run Code Online (Sandbox Code Playgroud)