kwooshung 2014-01-25 07:57 采纳率: 0%
浏览 22567

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

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

id   uid    title
...  ....   .....
375   1     文章标题1
376   1     文章标题2
377   1     文章标题3
378   2     asdfasdf
379   3     fdaewqwe
...  ....   .....

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

id   uid    title
...  ....   .....
379   3     fdaewqwe
378   2     asdfasdf
377   1     文章标题3
376   1     文章标题2
375   1     文章标题1
...  ....   .....

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

id   uid    title
...  ....   .....
379   3     fdaewqwe
378   2     asdfasdf
375   1     文章标题1
...  ....   .....

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

id   uid    title
...  ....   .....
379   3     fdaewqwe
378   2     asdfasdf
377   1     文章标题3
...  ....   .....

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

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

1
10
2
20

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

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

  • 写回答

9条回答

  • GDC_laji 2014-01-26 06:29
    关注

    ....难道所有的需求,一个select就能搞定

    评论

报告相同问题?

悬赏问题

  • ¥15 优质github账号直接兑换rmb,感兴趣伙伴可以私信
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)