84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我來到這裡並按照上面的答案操作。但是資料類型的順序不匹配導致了一個錯誤。下面來自另一個答案的描述會很有用。
上面的結果與您的表格中的列順序相同嗎?因為Oracle在列順序上很嚴格。下面的範例會產生一個錯誤:
create table test1_1790 ( col_a varchar2(30), col_b number, col_c date); create table test2_1790 ( col_a varchar2(30), col_c date, col_b number); select * from test1_1790 union all select * from test2_1790;
ORA-01790: 表達式必須具有與對應表達式相同的資料型別
正如您所看到的,錯誤的根本原因在於透過使用*作為列列表指定符來暗示的列順序不符。透過明確輸入列列表,可以輕鬆避免這種類型的錯誤:
select col_a, col_b, col_c from test1_1790 union all select col_a, col_b, col_c from test2_1790; 這種錯誤更常見的情況是當您在SELECT清單中無意中交換(或移動)兩個或多個欄位時:
select col_a, col_b, col_c from test1_1790 union all select col_a, col_c, col_b from test2_1790;
或者,如果上述方法不能解決您的問題,那麼如何在列中建立一個別名呢,就像這樣:(查詢與您的查詢不同,但這裡的重點是如何在列中新增別名。)
SELECT id_table_a, desc_table_a, table_b.id_user as iUserID, table_c.field as iField UNION SELECT id_table_a, desc_table_a, table_c.id_user as iUserID, table_c.field as iField
對於列較少的表,可以新增額外的空列,例如:
Select Col1, Col2, Col3, Col4, Col5 from Table1 Union Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2
我來到這裡並按照上面的答案操作。但是資料類型的順序不匹配導致了一個錯誤。下面來自另一個答案的描述會很有用。
上面的結果與您的表格中的列順序相同嗎?因為Oracle在列順序上很嚴格。下面的範例會產生一個錯誤:
ORA-01790: 表達式必須具有與對應表達式相同的資料型別
正如您所看到的,錯誤的根本原因在於透過使用*作為列列表指定符來暗示的列順序不符。透過明確輸入列列表,可以輕鬆避免這種類型的錯誤:
select col_a, col_b, col_c from test1_1790 union all select col_a, col_b, col_c from test2_1790; 這種錯誤更常見的情況是當您在SELECT清單中無意中交換(或移動)兩個或多個欄位時:
或者,如果上述方法不能解決您的問題,那麼如何在列中建立一個別名呢,就像這樣:(查詢與您的查詢不同,但這裡的重點是如何在列中新增別名。)
對於列較少的表,可以新增額外的空列,例如: