2013-12-11 102 views
0

我在我的網站中有兩張桌子,一張桌子是存放作者信息(ID,名稱,圖片,類型)另一張是存儲文章(ID,author_id,標題,內容,日期)。作者我有不止一篇文章。我想在我的sql生成鏈接與最新的文章排序的作者表的文章列表,但對於每個作者,我只想顯示一個文章,這是最新的。任何一個可以對此請幫助的想法...如何在mysql中使用order by和group by?

回答

0

嘗試

select 
    a.* 
from 
    article as a 
WHERE 
    a.id IN (SELECT MAX(id) FROM article GROUP BY author_id); 

如果你想筆者細節也嘗試

select 
    a.*,au.name,au.image 
from 
    article as a, 
    autor as au 
WHERE 
    a.id IN (SELECT MAX(id) FROM article GROUP BY author_id) 
AND 
    a.author_id = au.id; 

演示在http://sqlfiddle.com/#!2/8198b/19

+0

非常感謝大家的幫助,我寫了sql但很好,但是很慢,您怎麼看? – user3077029

+0

你有索引在你的領域,請嘗試索引文章表中的id,author_id字段和作者表的ID –

+1

這個答案假定文章的id值與日期值的順序相同。情況並非一定如此。要正確回答問題,您確實需要爲每位作者查找最新的文章日期,而不是最高的文章ID。 –

1

正確查詢因爲這是以下內容。

select * from article a 
where a.date >= all (select b.date from article b where a.author_id = b.author_id) 

如果太慢,那麼你可以通過(author_id, date)article表嘗試的索引。請注意,索引中列的順序很重要。 author_id必須是第一個。

+0

非常感謝,但作者信息我想加入此查詢與作者信息呢?我怎樣才能做到這一點 ?通過索引IDS你是什麼意思,我該怎麼做? – user3077029

+0

您可以在'from'子句中加入作者,就像您對任何其他查詢一樣。 –

0
SELECT * FROM 
    (SELECT * FROM author, article WHERE author.id=article.author_id order by date DESC) 
     tab group by id 

這是由筆者得到最新文章正確的查詢。

+0

感謝您的答覆,但它不工作可以喲請仔細檢查SQL? – user3077029