在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