在oracle中,当我这样做时: 从table1中选择table1.col1并从table2
中选择table2.col2它为我提供了所有记录的并集,结果列的名称为col1。
由于列名不匹配,不应该抛出错误吗?
答案 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
中的第一个查询。