oracle union子句:如果列名不匹配会发生什么

时间:2011-03-02 16:12:18

标签: sql oracle

在oracle中,当我这样做时: 从table1中选择table1.col1并从table2

中选择table2.col2

它为我提供了所有记录的并集,结果列的名称为col1。

由于列名不匹配,不应该抛出错误吗?

2 个答案:

答案 0 :(得分:6)

只要列数据类型不匹配,列名将始终来自第一个查询。它不应该(而且,正如你所发现的那样)不会抛出错误。

如果数据类型不匹配,即使可以进行隐式转换,通常也会出现错误

SQL> /
select 1 a from dual union select '2' from dual
       *
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression

SQL> /
select '1' a from dual union select 2 from dual
       *
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression

答案 1 :(得分:2)

union不关心列名称,它只关心列数以及最终的类型。

通常,列的名称来自union中的第一个查询。