MySQL查询“近期活动”

时间:2011-03-05 14:33:54

标签: mysql coalesce

我正在创建一个网站,用户可以在其中创建相册,创建活动,上传视频等。我想要做的是列出给定用户最近的活动。这是我的表格的一个小轮廓:

**videos**
id
user_id
uploaded

**albums**
id
user_id
created
updated

**comments**
id
user_id
date

当然,表中还有更多字段,还有更多表,但这些字段应足以帮助我构建查询。

现在我要输出的是一个日期,以及具有以下字段的给定活动的ID:

user_id, video_id, album_id, comment_id, date

当然只应选择其中一个ID字段,其余应为空,日期应来自视频的“已上传”,相册的“更新”和评论的“日期”。应该在where语句的查询中选择user_id,以便为给定用户获取活动。

我已经尝试构造这个查询但是失败了,请求COALESCE应该用于选择不同的时间戳,但我无法解决它。

1 个答案:

答案 0 :(得分:1)

这样的东西?

(select user_id, id as video_id, NULL as album_id, NULL as comment_id, uploaded as date from videos)
UNION
(select user_id, NULL, id, NULL, uploaded from albums)
UNION
(select user_id, NULL, NULL, id, date from comments)

您可以在整个事件之后应用ORDER BY子句,但WHERE条件可以放在每个单独的SELECT的范围内。