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

比如数据表“article”中有一组这样的数据:id uid title... .... .....375 1 文章标题1376 1 文章标题2377 1 文章标题3378 2 asdfasdf379 3 fdaewqwe... .... .....

然后我写了一句这样的sql:

select * from article order by id desc

执行后,结果如下:id uid title... .... .....379 3 fdaewqwe378 2 asdfasdf377 1 文章标题3376 1 文章标题2375 1 文章标题1... .... .....

然后我又加入了group by,为了只调用每个用户的1篇文章,sql代码如下

select * from article group by uid order by id desc

执行后,结果如下:id uid title... .... .....379 3 fdaewqwe378 2 asdfasdf375 1 文章标题1... .... .....

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值