2015-11-10 118 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

相關問題