在Oracle中,会发生什么,当我做:从表1的工会选择table2.col2 选择table1.col1从表2甲骨文联合caluse:如果有一个列名不匹配
它给我的所有记录的工会和结果列的名称是col1。
不应该由于列名不匹配而抛出错误吗?
在Oracle中,会发生什么,当我做:从表1的工会选择table2.col2 选择table1.col1从表2甲骨文联合caluse:如果有一个列名不匹配
它给我的所有记录的工会和结果列的名称是col1。
不应该由于列名不匹配而抛出错误吗?
只要列数据类型不匹配,列名将始终来自第一个查询。它不应该(并且,正如你发现的那样)不会抛出错误。
如果数据类型不匹配,即使隐式转换是可能的,你会普遍得到
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
union
不关心列的名称,它只关心列的数量,最终它们的类型。
通常,列的名称来自union
中的第一个查询。
“通常”? 。 。 。 – 2011-03-03 02:49:04
没有......结果集是根据第一选择创建,只要一个错误“类型“匹配,第二个选择的结果集被附加。 – 2011-03-02 16:16:25