如何无需子查询,通过SQL GROUP BY获取各用户最新平台发帖日期?
解决方案:无需子查询获取用户最新社交平台发帖日期
当然可以做到!其实这个需求用基础的聚合函数就能轻松实现,完全不需要子查询。核心思路是利用MAX()函数忽略NULL值的特性,结合GROUP BY按用户分组,直接提取每个用户的最新发帖日期。
具体SQL代码
SELECT person_id, MAX(ig_post_date) AS last_ig_post_date, MAX(fb_post_date) AS last_fb_post_date FROM POSTS GROUP BY person_id;
代码说明
GROUP BY person_id:将数据按用户ID分组,确保每个用户只返回一行结果。MAX(ig_post_date):自动忽略该用户所有NULL的Instagram发帖日期,从非空值中筛选出最晚的日期,也就是最新的发帖时间。MAX(fb_post_date):同理处理Facebook的发帖日期,得到该用户最新的Facebook发帖时间。
针对你给出的示例数据,执行这段SQL后,用户ID为5的结果会是:
| person_id | last_ig_post_date | last_fb_post_date |
|---|---|---|
| 5 | 2018-03-22 | 2018-03-24 |
完全符合你想要的输出格式,而且写法简洁高效。
内容的提问来源于stack exchange,提问作者NaturalBornCamper
相关产品推荐
相关产品推荐

