我有两个表,users 和 posts。我正在尝试编写一个查询来查找用户的最新帖子,但我遇到了麻烦。这是我目前所拥有的。
select a.username, b.last_post from logins as a join (select login_id, entry as last_post from posts) as b 其中 a.id = b.login_id
+-----------+---------------------+
| username | last_post |
+-----------+---------------------+
| something | 2013-10-08 22:12:00 |
| other | 2013-10-08 22:13:00 |
| test | 2013-10-08 22:13:03 |
| test | 2013-10-08 22:14:20 |
| hello | 2013-10-08 22:12:53 |
| hello | 2013-10-08 22:12:56 |
+-----------+----------+----------+
所以现在 last_post
只是它正在拉取的帖子的时间戳。我如何获得一个表格,该表格仅显示这些用户的最后一个帖子?
最佳答案
如果只需要两列,可以直接使用MAX()
SELECT a.username,
MAX(b.entry) last_post
FROM logins a
INNER JOIN posts b
ON a.id = b.login_id
GROUP BY a.username
否则,如果您想显示所有表中的所有列,您可以使用子查询为每个 login_id
entry
SELECT a.*, b.*
FROM logins a
INNER JOIN posts b
ON a.id = b.login_id
INNER JOIN
(
SELECT login_id, MAX(entry) entry
FROM posts
GROUP BY login_id
) c ON b.login_id = c.login_id AND
b.entry = c.entry
关于php - 只获取最新的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19330001/