mysql - 根据user_id查询获取所有最新记录

标签 mysql greatest-n-per-group

我有一个名为 photos 的表,其中包含数十万张用户上传的照片。

每个用户显然可以上传多张照片。

表架构为:

id, 
user_id, 
photo, 
date_created

我只想获取每个user_id发布的最新记录..

我尝试过:

SELECT * FROM photos 
GROUP BY user_id 
ORDER BY date_created desc LIMIT 300

但这显然会带来很多奇怪的结果。

这似乎是一个简单的查询,但我对堆栈溢出进行了数小时的研究,并阅读了 Google 上的许多不同文章,但我一辈子都无法弄清楚这个简单的查询。

最佳答案

这应该为您提供每个用户的最新行:

SELECT p.user_id, photo, date_created FROM photos p
JOIN (
    SELECT user_id, MAX(date_created) max_date FROM photos GROUP BY user_id
) max_dates ON p.user_id = max_dates.user_id AND p.date_created = max_dates.max_date

Sample SQL Fiddle

关于mysql - 根据user_id查询获取所有最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381154/

相关文章:

mysql - 检查两列mysql之间的多个值

python - 想要显示图像

mysql - 尝试选择最大列学年

php - MySQL:将查询限制为 10 行,其中每个索引都有 5 个标签

sql - 每个两列组合的前两行

php - Medoo PHP 框架 - 'select' 'left join' 使用 'and' 测试条件(如 col = val)

mysql - 如何正确索引多个左连接

java - 如何在 PreUpdate 事件上复制 mysql 行

sql - DISTINCT ON,但获取第二行,而不是第一行

mysql - 在 GROUP BY 中使用 LIMIT 来获得每组 N 个结果?