2014-03-30 45 views
0

我有兩個表:文章類別(約20種),我想獲得最新的10篇文章,但不超過一個從類別。MySQL查詢來獲得最後一個記錄在每個類別

文章

id | title | text 

分類

id | name 

ArticlesCategories

article | category 
(文章和類別之間relationsl表)

即時通訊使用下面的查詢,但問題是,10個結果並不是所有的最新文章。

SELECT id, title, categoryId, categoryName 
FROM ( 
     SELECT a.id, a.title, ac.category AS categoryId, c.name AS categoryName 
     FROM articles AS a 
      LEFT JOIN articles_categories AS ac ON ac.article = a.id 
      LEFT JOIN categories AS c ON c.id = ac.category 
     WHERE ac.priority = 1 
     ORDER BY a.id DESC) AS tmp_table 
GROUP BY categoryId LIMIT 10 
+0

最新的,做你有日期字段? – Mihai

+0

使用文章的ID字段。 – Boris

+1

GROUP BY後的ORDER BY ID DESC LIMIT 10' – Mihai

回答

2

添加ORDER BY id DESC到您的查詢

這是獲得最後10行的辦法是顛倒順序,選擇前十行​​:基於什麼

SELECT id, title, categoryId, categoryName 
FROM ( 
     SELECT a.id, a.title, ac.category AS categoryId, c.name AS categoryName 
     FROM articles AS a 
      LEFT JOIN articles_categories AS ac ON ac.article = a.id 
      LEFT JOIN categories AS c ON c.id = ac.category 
     WHERE ac.priority = 1 
     ORDER BY a.id DESC) AS tmp_table 
GROUP BY categoryId ORDER BY id DESC LIMIT 10 
+0

我有困惑或不是GROUP應該在ORDER之前執行嗎?在這種情況下,ORDER BY應該沒有區別。 – Boris

+0

您需要訂購分組數據?不是嗎? – underscore

+0

沒關係Samitha :)它的工作完美 – Boris

相關問題