如何通过更多1个表中的最新记录订购

时间:2016-06-19 08:00:49

标签: mysql sql

我有3项活动。查看,赞和评论。我希望根据最新活动获得项目列表,并在每个项目中完成哪些活动。

我尝试为多个字段分配一个别名,并按顺序使用它......但它失败了......

我怎样才能实现这个目标?

setTimeout

1 个答案:

答案 0 :(得分:3)

您可以使用MySQL GREATEST()函数返回所提供元素中最大的函数:

SELECT item_name, MAX(item_view_date) AS date1, MAX(item_like_date) AS date2, MAX(item_comment_date) AS date3
FROM item 
LEFT JOIN item_like ON like_item_id = item_id 
LEFT JOIN item_comment ON comment_item_id = item_id 
LEFT JOIN item_view ON view_item_id = item_id 
GROUP BY item_name
ORDER BY GREATEST(COALESCE(date1,date2,date3),
                  COALESCE(date2,date1,date3),
                  COALESCE(date3,date1,date2))

正如您所看到的,我在每个日期都添加了MAX(date),因为您在没有指定聚合函数的情况下继续加入并使用GROUP BY子句。通常必须在group by子句或聚合函数中指定每列。

然后有COALESCE()部分,因为您LEFT加入,可以有NULL个值,因此 - 使用COALESCE()来消除空值。