所以我有一个带有author_id外键和已发布状态(bool)的帖子表。
我想为作者选择所有最新(最高ID)发布的帖子(所有具有相同author_id外国ID的帖子)。
现在我可以获得一组外键的最高价
SELECT * FROM Posts WHERE id = (SELECT MAX(id) FROM Posts WHERE published = 1 AND author_id = 5);
但是这只返回给定外键的最高id。我如何写这个来返回外键组中id最高的所有帖子?
任何建议表示赞赏。感谢
编辑:如果用sql-server和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
所以我想要做的是抓住id 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帖子WHERE id IN(SELECT MAX(id)FROM Posts WHERE published = 1 GROUP BY author_id);
答案 0 :(得分:3)
你需要这样做:
SELECT * FROM Posts WHERE id IN (SELECT MAX(id) FROM Posts WHERE published = 1 GROUP BY author_id);
乐意帮助。
答案 1 :(得分:0)
如果您想要作者的最新帖子,请使用ORDER BY
和LIMIT
。例如,要获取作者5的最近10篇帖子:
SELECT p.*
FROM Posts p
WHERE p.author_id = 5
ORDER BY p.id DESC
LIMIT 10;