Heim >Datenbank >MySQL-Tutorial >mysql查询如何先排序再分组呢?纠结了好几天了。

mysql查询如何先排序再分组呢?纠结了好几天了。

WBOY
WBOYOriginal
2016-06-06 09:45:011754Durchsuche

mysql分组去重排序查询

比如数据表“article”中有一组这样的数据:

<code>id   uid    title...  ....   .....375   1     文章标题1376   1     文章标题2377   1     文章标题3378   2     asdfasdf379   3     fdaewqwe...  ....   .....</code>

然后我写了一句这样的sql:
select * from article order by id desc
执行后,结果如下:

<code>id   uid    title...  ....   .....379   3     fdaewqwe378   2     asdfasdf377   1     文章标题3376   1     文章标题2375   1     文章标题1...  ....   .....</code>

然后我又加入了group by,为了只调用每个用户的1篇文章,sql代码如下
select * from article group by uid order by id desc
执行后,结果如下:

<code>id   uid    title...  ....   .....379   3     fdaewqwe378   2     asdfasdf375   1     文章标题1...  ....   .....</code>

上面的数据看似正常,其实不对,因为先分组后排序了,所以我没法取得用户的最新文章了,始终是第一篇,正确的结果应该是:

<code>id   uid    title...  ....   .....379   3     fdaewqwe378   2     asdfasdf377   1     文章标题3...  ....   .....</code>

这样才是取得用户的最新文章,并且过滤掉了用户的其他文章,因为如果页面上显示5条文章,不能有3条都是同一个人写的文章,应该这5条应该是最近发表文章的5个人的最新文章。

期间查询了很多技术资料,说用max或distinct的都不对,结果都是只显示第一篇文章。而且distnct更查询出来的结果顺序不对,更乱了。比如1,2,10,20,这几个id号变成了:

<code>110220</code>

所以,想请教各路SQL大仙,看看应该怎么办呢?

当然,要求不能使用子查询。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn