2014-01-31 128 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