在日志表里面有个好几个记录类,时间不同。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就行
jeck猫
TA贡献1909条经验 获得超7个赞
想了半天,看了上面的答案后还是有点懵,结果晚上自己莫名奇妙的写出来了。。参考上面用max(creatime)time,会发现结果出来的集合中time和creatime不一样的。这也是导致为啥groupby不是我要的东西。首先找到selectmix(creatime)time,tagFromlog_info然后限定条件,排序。得出一个4个tag,然后有最新的time的表然后用原表内连接,限定条件是子查询的time=原表的createtime,tag=原表的tag然后结果就出来了。。
添加回答
举报
0/150
提交
取消
