2011-11-03 99 views
2

我有兩個具有相同結構處理不同數據的表。我想合併它們,添加一個文本字段,指示該行的數據來自哪裏,然後按照公共字段排序。MySQl,加入/合併2個沒有共享列的表,並且通過一個公共列進行排序

TABLE1

ID|NAME|YEAR 

1,'peter',2008 
2,'edward',2010 

TABLE2

ID|NAME|YEAR 

1,'compadre',2009 
2,'vika',2011 

DRAFT查詢(顯然是錯誤的)

select * from TABLE1 JOIN TABLE2 order by YEAR asc 

預期的結果:

1,'peter','iamfromTABLE1',2008 
1,'compadre','iamfromTABLE2',2009 
2,'edward','iamfromTABLE1',2010 
2,'vika','iamfromTABLE2',2011 

我知道我能做到這一點使用PHP/MySQL的,但有沒有像「一個簡單查詢」更優雅的方式。

回答

6

使用一個聯合查詢和文字:

SELECT ID, Name, 'iamfromTABLE1' as indicator, Year 
FROM Table1 
UNION 
SELECT ID, Name, 'iamfromTABLE2' as indicator, Year 
FROM Table2 
ORDER BY Year 

編輯:as indicator增加對iim.hlk

+1

你是,那人(來自墨西哥蒙特雷的問候)推薦:乙 – AgelessEssence

+1

一對你的代碼進行的小修正是**'iamfromTABLE1'作爲指示符**,**'iamfromTABLE2'作爲指示符**來返回名爲'indicator'的虛擬列而不是'iamfromTABLE1'作爲列名。 – AgelessEssence

+0

啊!很高興知道!我不知道在MySQL中需要識別文字,但它是有道理的。 – MPelletier

相關問題