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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-06 09:45:01
asal
1798 orang telah melayarinya

mysql分组去重排序查询

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

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

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

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

然后我又加入了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>
Salin selepas log masuk

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

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

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

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

<code>110220</code>
Salin selepas log masuk

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

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan