我有一個包含新聞帖子的表,並且希望獲得每個類別的最後添加的newspost。
該表包含這些列:獲取每個類別中列的最大值的整行
- ID,標題,圖片,描述,類別,日期
例如:我有3類20個職位。每個類別日期的最後一篇文章被返回,所以我得到3篇文章。
我有一個包含新聞帖子的表,並且希望獲得每個類別的最後添加的newspost。
該表包含這些列:獲取每個類別中列的最大值的整行
例如:我有3類20個職位。每個類別日期的最後一篇文章被返回,所以我得到3篇文章。
認爲這樣做的最小,最可用的解決方案是一個:
SELECT * FROM (
SELECT * FROM table ORDER BY date DESC
) as t
GROUP BY t.category;
的另一種方法將與子查詢具有羣組...
@eggyal: 由於rdbms的內部排序順序,這將使用最後插入的max_date ...
SELECT newsposts.* FROM newsposts NATURAL JOIN (
SELECT category, MAX(date) AS date FROM newsposts GROUP BY category
) t
1. group by受傳入集在mysql中的順序的影響... - 在指出之前進行測試運行.. 2.所有列受到組的影響 - 這是組合的目的;你按類別分組,它將使用組中的第一個「子結果」來顯示,在這種情況下:最後一個newspost ... 3.我已經測試過了 - 這很簡單,但如果你真的想要撞擊解決方案,我會添加一個... – TheHe
此行爲不能被依賴。正如[手冊](http://dev.mysql.com/doc/en/group-by-hidden-columns.html)所說:「*服務器可以自由選擇每個組的任何值,因此除非它們是同樣,選擇的值是不確定的。「」 – eggyal
http://stackoverflow.com/questions/7114173/order-by-subquery-for-group-by-to-join-conversion – TheHe