Mysql 通过另一个相关表获取最新记录

Mysql 通过另一个相关表获取最新记录,mysql,Mysql,我如何创建一个MySQL命令来获取最新的类别,这些类别都有一个post-favorited 我正在尝试加入表格并对它们进行分组,但不确定如何将结果限制在最大类别数 举一个简单的例子来说明我要做的事情: Users (id) Favorites (id, last_updated, post_id, user_id) Posts (id, title, category_id) Categories (id, name) 然后对于sql: SELECT favorites.*, posts.ca

我如何创建一个MySQL命令来获取最新的类别,这些类别都有一个post-favorited

我正在尝试加入表格并对它们进行分组,但不确定如何将结果限制在最大类别数

举一个简单的例子来说明我要做的事情:

Users (id)
Favorites (id, last_updated, post_id, user_id)
Posts (id, title, category_id)
Categories (id, name)
然后对于sql:

SELECT favorites.*, posts.category_id
FROM favorites
INNER JOIN posts ON favorites.user_id = 1 AND favorites.post_id = posts.id
INNER JOIN categories ON posts.category_id = categories.id
GROUP BY categories.id, favorites.id
ORDER BY favorites.last_updated DESC

显然,此语句没有按预期工作,因为它为每个类别返回多个结果,而不是为每个类别返回一个结果-最近的。

您不能按
分组
选择中不存在的字段

下面是一个解决方案,假设您只希望用户_id=1使用此选项:

SELECT c.id, MAX(f.last_updated)
FROM favorites f
INNER JOIN posts p ON (f.user_id = 1 AND f.post_id = p.id)
INNER JOIN categories c ON (p.category_id = c.id)
GROUP BY c.id
ORDER BY MAX(f.last_updated) DESC

这样,您就可以获得所需类别的ID。您可以再次将结果与类别合并,以获得其余的列。

请参阅非常感谢。