2014-01-31 48 views
1

我有兩個表調用和任務。我想從兩個表中獲得最遠的日期。結果將是一個日期,即所有的最大值。Mysql UNION表最大日期

所以基本上要加入奎雷斯下面

選擇id,MAX(date_due)FROM任務WHERE parent_id = '35' 和date_due> CURDATE()

選擇id,MAX( date_start)FROM calls WHERE parent_id ='35' AND date_start> CURDATE()

這些將導致每個表的最大日期,但我如何得到最高日期的單個記錄。

回答

2

如果你想從MAX(date_due)MAX(date_start)

最大價值的別名添加到您的MAX功能

使用UNION你的兩個查詢之間

使用的是被聯合查詢作爲子查詢。

select id, MAX(mx) FROM 

(SELECT id, MAX(date_due) as mx FROM tasks WHERE parent_id = '35' AND date_due > CURDATE() 
UNION 
SELECT id, MAX(date_start) as mx FROM calls WHERE parent_id = '35' AND date_start > CURDATE()) s 
+0

請注意,最後的「s」不是一個錯字,但它的子查詢的別名,這是必要的,以避免MySQL的錯誤'每個派生的表必須有自己的alias'。如果你想有一個更具可讀性的查詢,用'CURDATE())AS子查詢'替換'CURDATE())' – lucaferrario