2017-02-11 74 views
0

我想根据来自3页不同的表更新日期列记录进行排序, 我有一个followig组数据排序行的基础上,从不同的表中3分日期列在MySQL

Table A 
    Id data updatedOn 
    1 abc 2017-02-11 09:34:40 

Table B 
    Id question updatedOn 
    1 xyz  2017-02-11 09:35:40 
    1 pqr  2017-02-11 09:40:40 

Table C 

    Id quote updatedOn 
    1 300$ 2017-02-11 09:37:40 

现在我的结果应该

Id question quote a.updatedOn  b.updatedOn   c.updatedOn 
    1 pqr  300 2017-02-11 09:34:40 2017-02-11 09:40:40 2017-02-11 09:37:40 

但结果是

Id question quote a.updatedOn  b.updatedOn   c.updatedOn 
    1 xyz  300 2017-02-11 09:34:40 2017-02-11 09:35:40 2017-02-11 09:37:40 

由于questio最近更新了pqr

我尝试下面的查询

SELECT a.updatedOn,b.updatedOn,c.updatedOn FROM `A` a 
left join B b on a.id= b.id 
left join C c on c.id = a.id 
group by id having a.id = 7 
order by ifnull(a.updatedOn,0) 
DESC,ifnull(b.updatedOn,0) DESC, 
    ifnull(c.updatedOn,0) DESC 

的问题是,如果我更新第一个表中的数据涉及在结果是确定的顶部,但如果我更新了第二和第三的第二次,它不会得到显示按预期的降序排列。

此外,我尝试上面的查询与日期列 GREATEST函数,但没有运气。

请帮忙。 谢谢。

+0

那么究竟是什么问题? – Mureinik

+0

以表格结构显示输出 – denny

回答

0

您没有使用聚合函数,所以你应该使用不同的,如经取代基和具有

SELECT distinct a.updatedOn,b.updatedOn,c.updatedOn 
FROM `A` a 
left join B b on a.id= b.id 
left join C c on c.id = a.id 
WHERE a.id = 7 
order by greatest(a.updatedOn,b.updatedOn,c.updatedOn) desc