嘿大家。我相信這是一個'最大的n-per-group'問題,但即使在查看幾個關於StackOverflow的問題之後,我不確定如何將其應用於我的情況...MySQL最大 - 每組麻煩
我正在使用MySQL數據庫並有一個基本的博客類型的系統中設置了有關計算機應用......這些表是這樣的:
POSTS
post_id
post_created
post_type -- could be article, review, feature, whatever
post_status -- 'a' approved or 'd' for draft
APPS
app_id
app_name
app_platform -- Windows, linux, unix, etc..
APP_TO_POST -- links my posts to its relevant application
atp_id
atp_app_id
atp_post_id
我用下面的基本查詢拉了一個名爲「Photoshop的應用程序的所有文章其中郵政類型爲'物品'且物品的狀態爲批准的'a':
SELECT apps.app_name, apps.app_platform, posts.post_created, posts.post_id
FROM apps
JOIN app_to_post ON app_to_post.atp_app_id = apps.app_id
JOIN posts ON app_to_post.atp_post_id = posts.post_id
WHERE apps.app_name = 'Photoshop'
AND
posts.post_type = 'Article'
AND
posts.post_status = 'a'
它得到我這些預期結果:
app_name app_platform post_created post_id
Photoshop Windows Oct. 20th, 2009 1
Photoshop Windows Dec. 1, 2009 3
Photoshop Macintosh Nov. 10th, 2009 2
會有人能夠伸出援助之手,我怎麼可能會改變該查詢只拉每個應用平臺最近的文章?因此,例如,我想我的結果是這樣的:
app_name app_platform post_created post_id
Photoshop Windows Dec. 1, 2009 3
Photoshop Macintosh Nov. 10th, 2009 2
,並省略'Photoshop Windows'
文章之一,因爲它不是最近的一次。
如果我簡單地使用MAX(post_created)
和GROUP BY app_platform
,我的結果並不總是正確分組。從我的理解我需要執行子查詢的某種內部連接?
我正在通過類似的問題,「有」的聲明並沒有解決它。 MySQL似乎報告了它爲每個分組行找到的第一個結果,並且所有「having」將會完全排除第一個結果與最大結果不匹配的任何行。 – 2011-06-22 15:12:41