2015-11-10 119 views
0

因此,我有一个包含author_id外键和发布状态(布尔型)的帖子表。从表中选择所有行中具有相同外键的所有行的最高ID的所有

我想为作者(所有具有相同author_id外部标识的那些人)选择所有最近(最高ID)发布的帖子。眼下

我可以得到最高的一组外键

SELECT * FROM Posts WHERE id = (SELECT MAX(id) FROM Posts WHERE published = 1 AND author_id = 5); 

,但是这只是返回给定外键的最高ID。我如何编写这个函数来返回其外键组中最高ID的所有帖子?

任何意见表示赞赏。谢谢

编辑:有它标记与SQL服务器和MySQL。这是MySQL。比较遗憾的是

编辑:有些要求清晰 这里是什么,我正在寻找一个样本: id body author_id published 1 Top 10... 1 1 2 Breaking... 1 1 3 New Report.. 3 1 4 Can Sunscreen... 3 1 5 Dow down... 2 1 6 Heart Warming... 2 1 7 Next time... 1 1 8 New study... 3 0

所以我想要做的就是抓住与IDS 4,6的职位和7因为4是作者3的最近(最高ID),6是作者2的最近期,7是作者1的最近期。我也有发布的条件,这就是为什么我们不抓住8,因为它是0。

4 Can Sunscreen... 3 1 6 Heart Warming... 2 1 7 Next time... 1 1

已经回答了: 通过添加一个IN而不是= Igor Quirino答案,我认为以下工作:

SELECT * FROM Posts WHERE id IN(SELECT MAX(id)FROM Posts WHERE published = 1 GROUP BY author_id) ;

+0

谢谢你让我知道。请问 – Deciple

回答

3

你需要这样做:

SELECT * FROM Posts WHERE id IN (SELECT MAX(id) FROM Posts WHERE published = 1 GROUP BY author_id); 

乐意提供帮助。

+0

非常感谢,我会研究分组。但现在我得到Subquery返回多于一行。 – Deciple

0

如果您需要作者的最新文章,请使用ORDER BYLIMIT。例如,为了获得最近10个职位,笔者5:

SELECT p.* 
FROM Posts p 
WHERE p.author_id = 5 
ORDER BY p.id DESC 
LIMIT 10; 
+0

谢谢!但是,我如何为所有作者做这件事?我正在尝试为所有作者获取最新的帖子。 – Deciple

相关问题