將兩個不同列數的表格
P粉879517403
P粉879517403 2023-08-24 18:54:05
0
2
529
<p>我有兩個表(表A和表B)。 </p> <p>這兩個表的列數不同 - 假設表A有更多的列。 </p> <p>我如何將這兩個表合併,並在表B沒有的列上取得null值? </p>
P粉879517403
P粉879517403

全部回覆(2)
P粉670107661

我來到這裡並按照上面的答案操作。但是資料類型的順序不匹配導致了一個錯誤。下面來自另一個答案的描述會很有用。

上面的結果與您的表格中的列順序相同嗎?因為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
P粉662361740

對於列較少的表,可以新增額外的空列,例如:

Select Col1, Col2, Col3, Col4, Col5 from Table1
Union
Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!