UNION两个具有不同列数的表

时间:2014-01-04 16:20:47

标签: sql derby

我正在尝试在两个具有不同列数的表之间执行UNION。从this question我知道你需要在表上添加额外的空列,列数较少,但这样做会导致以下错误:

Error code -1, SQL state 42X01: Syntax error: Encountered "null" at line 1, column 75.

查询是:

SELECT column1, column2 
from APP.lefttable 
WHERE column2 = 'value' 
union all 
select column1, null as column2 
from APP.righttable";

我只想在UNION子句的右侧有一个列,所以我试图将其中一列设为null,但会出现上述错误。

如果有帮助我在使用Apache Derby作为我的RDBMS的Java应用程序中这样做。

2 个答案:

答案 0 :(得分:1)

试试这个

    SELECT * from
    (
    SELECT column1, column2 from APP.lefttable WHERE column2 = 'value' 
    union all 
    SELECT column1,NULL AS Column2 from APP.righttable
    )

答案 1 :(得分:0)

我想知道派生表的column2是否根据union中的第一个查询被定义为NOT NULL。如果您切换查询怎么办:

select column1, null as column2 from APP.righttable"
union all 
SELECT column1, column2 from APP.lefttable WHERE column2 = 'value';