2013-05-03 48 views
1

我有兩個mysql表。一張表用於「收到的付款」,另一張用於「付款」。這兩個表都有一些常見的字段,但有些與收到的付款有所不同,有一列'badDebt'等等。 這兩個表都有一個日期列。按日期排序mysql中兩個表的記錄

現在我需要從這兩個表中生成一個完整的交易聲明datewise。所以我計劃使用UNDER和ORDERBY。但它不起作用,因爲列的數量需要相同。

在我的情況下列不同。在這種情況下應該做些什麼?

+0

請發表您的表的架構和所需的輸出。 – 2013-05-03 06:26:29

回答

1

使用虛擬/佔位符列。

例如

select col1, NULL as col2, col3 from Table1 
union all 
select col1, col2, Null as col3 from Table2 

對缺失的列使用NULL或適當的虛擬值。

的「AS」語句用來給虛擬列的名稱。嚴格地說,我只相信UNION需求第一SELECT定義的列名,但我更願意是明確的。

+0

我不理解這兩個select查詢中的「as」部分。每個查詢中它們對應的列是什麼? – beNerd 2013-05-03 06:42:09

+0

也有,我可以通過使用*從兩個表中獲取所有列嗎? – beNerd 2013-05-03 07:06:45

+0

不,如果他們有不同數量/類型的列(如您所述)。 – 2013-05-03 07:10:42

-1

嘗試使用UNION語法。

SELECT column_name(s) FROM table_name1 
UNION 
SELECT column_name(s) FROM table_name2 

UNION運算符默認情況下只選擇不同的值。要允許重複值,使用UNION ALL。希望它可以幫助你。

+1

您是否正確地閱讀了該問題?我已經提到過,因爲這兩個表中的列數是不同的。並在工會的列數必須相同。請看米奇小麥的答案。 – beNerd 2013-05-03 08:17:10