为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现GROUP BY DESC?现在出来的结果正好和我要的相反。

如何实现GROUP BY DESC?现在出来的结果正好和我要的相反。

饮歌长啸 2019-05-22 17:38:31
在日志表里面有个好几个记录类,时间不同。SQL例子如下SELECTmsg,tagFROMlog_infoWHEREDATE_FORMAT(createTime,'%Y-%m-%d')=DATE_FORMAT(CURDATE(),'%Y-%m-%d')ANDtype='File'AND(tag='tag1'ortag='tag2'ortag='tag3'ortag='tag4')GROUPBYtag,createTimeORDERBYcreateTimeDESCLIMIT4是用来查询当天最新的4个tag对应的msg。。不过实际用的时候发现。tag会有重复。比如tag1和tag2有更加新的时间时,会搜索出tag1tag2tag1tag2说的有的乱,不知道能不能看到。。原本想用子查询先将结果排序在groupby,但是返回结果一直是最早创建的在前面。。所以自己用这种limit的方式截取,然而发现有BUG。。
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

有个问题:结果有msg,分组的时候怎么没msg字段?
思路:第一次查询内容为tag和max(createTime),然后就找到了tag和最后更新时间的关系,排序,然后根据tag找对应msg就行
                            
查看完整回答
反对 回复 2019-05-22
?
jeck猫

TA贡献1909条经验 获得超7个赞

想了半天,看了上面的答案后还是有点懵,结果晚上自己莫名奇妙的写出来了。。参考上面用max(creatime)time,会发现结果出来的集合中time和creatime不一样的。这也是导致为啥groupby不是我要的东西。首先找到selectmix(creatime)time,tagFromlog_info然后限定条件,排序。得出一个4个tag,然后有最新的time的表然后用原表内连接,限定条件是子查询的time=原表的createtime,tag=原表的tag然后结果就出来了。。
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 2142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号