如何在mysql中一起使用order by和group?

时间:2013-12-11 20:28:31

标签: sql-order-by

我在我的一个网站上有两个表,一个表是保存作者信息(id,name,image,type)另一个是存放文章(id,author_id,title,contents,date)。作者我有不止一篇文章。我希望在我的sql中生成一个与最新文章排序的作者表链接的文章列表,但对于每个作者,我只想显示一篇最新的文章。任何人都可以对此有所了解请帮助...

3 个答案:

答案 0 :(得分:1)

尝试

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

演示

答案 1 :(得分: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必须是第一个。

答案 2 :(得分:0)

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

这是获取作者最新文章的正确查询。