首页 文章

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

提问于
浏览
2

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

它给了我所有记录的并集,结果列的名称是col1 .

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

2 回答

  • 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
    
  • 2

    union 不关心列名,它只关心列的数量,最终关心它们的类型 .

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

相关问题