2012-03-27 137 views
4

我有2周的節日和活動,如MySQL的UNION查詢與條件

節日

id | name  | modified_date 
----------------------------------- 
12 | fest 1  | 2012-03-14 17:45:40 
13 | fest 2  | 2012-03-14 17:45:40 
15 | fest 4  | 2012-03-14 17:45:40 
11 | fest 5  | 2012-03-14 17:45:40 

事件

id | name  | modified_date 
----------------------------------- 
14 | envt 1  | 2012-03-14 17:45:40 
15 | envt 2  | 2012-03-14 17:45:40 
16 | envt 4  | 2012-03-14 17:45:40 
17 | envt 5  | 2012-03-14 17:45:40 

有一個在我的應用程序頁面顯示最近的更新,並通過點擊每個列表將重定向到相應的事件或節日。

爲此,我有以下查詢

select id,name,modified_date from events 
UNION 
select id,name,modified_date from festival 
order by modified_date desc 

這將返回一個表像

id | name  | modified_date 
------------------------------------- 
12 | fest 1  | 2012-03-14 17:45:40 
13 | fest 2  | 2012-03-14 17:45:40 
-------------------------------------------- 

但我的問題是,我需要一個更列在了放理解該行代表一個事件或節日..喜歡的部份東西

id | name  | modified_date   | type 
--------------------------------------------------- 
12 | fest 1  | 2012-03-14 17:45:40 | festival 
15 | evnt 2  | 2012-03-14 17:45:40 | event 

請幫助 在此先感謝

+2

你可能想使用全部,而不是UNION UNION,因爲它通常更快的是,如果你知道你的結果集不重疊(UNION要求RDBMS在內部執行DISTINCT)。 – 2012-03-27 06:18:35

回答

10
select id, name, modified_date, 'event' as type 
from events 

UNION 

select id, name, modified_date, 'festival' as type 
from festival 
order by modified_date desc 
+1

你快速的男人:) – Phil 2012-03-27 06:17:48

+4

@Phil你知道他們說...贏了,你必須聰明,快速或作弊。由於我還沒有找到一個好辦法,所以我只關注快速。 – 2012-03-27 06:19:46

+2

不要相信......他很好@作弊也:) – 2012-03-27 22:01:43

3

這應該做的伎倆

select id,name,modified_date, 'event' AS type from events 
UNION 
select id,name,modified_date, 'festival' AS type from festival order by modified_date desc