php - 只获取最新的帖子

标签 php mysql sql join

我有两个表,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/

相关文章:

MySQL—— "Cannot add foreign key constraint"

MySQL 整个时间内按类别的成本

php - 在选择查询中从两个不同的表中减去两个不同的列总和

mysql - 如何显示24小时计算的时间结果

mysql - 理解 mysql_real_escape_string();

php - 使用 PHP 从浏览器通过 Android 摄像头捕获图像

php - Facebook 热门共享网址,由用户使用间隔和 mysql 选择更新进行更新

php - 仅在特定时间每分钟运行一次 cron 作业?

php - 删除变量中存储的内容中从顶部开始的前四行

php - 您的 SQL 语法有误 - PHP