博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
group by查询每组时间最新的一条记录
阅读量:7023 次
发布时间:2019-06-28

本文共 1410 字,大约阅读时间需要 4 分钟。

错误写法,having time = max(time)在分组之后执行,查询出来只有一条满足条件的数据。having过滤的是组,在order by之后执行

select id,userId,userFlag,lontitude,latitude,time,addr,locationdescribe        from user_position        group by userId        having time = max(time)        and userId in (select id from users where group_code=(select group_code from users where id = #{userId}))        ORDER BY time desc

数据格式

详细步骤

1.查询出分组的所有按时间降序的记录id并拼接

--查询出分组的所有按时间降序的记录id并拼接select group_concat(id order by `time` desc) from user_position group by userId

结果

2.查询每个分组中时间最新的那条记录的id

--查询每个分组中时间最新的那条记录的idselect SUBSTRING_INDEX(group_concat(id order by `time` desc),',',1) from user_position group by userId

结果

3.所有成员最新一条记录

select * from user_position as t where t.id in (select SUBSTRING_INDEX(group_concat(id order by `time` desc),',',1) from user_position  group by userId)

4.根据id所在组查询组成员最新数据

select * from user_position as t where t.id in (select SUBSTRING_INDEX(group_concat(id order by `time` desc),',',1) from user_position  where userId in (select id from users where group_code=(select group_code from users where id = 'qyid1')) group by userId)

结果

 

巨坑

分组不是取数据的第一条!!!

select * from user_position as u

查询结果

select * from user_position as u group by u.userId

分组后,确实取的第一条

但是!!!

select * from (select * from user_position order by userId,time desc) as u group by u.userId

网上这种先排序再分组的,结果和上面一样!!!并没有取第一条!!!

 参考:

转载于:https://www.cnblogs.com/aeolian/p/9359898.html

你可能感兴趣的文章
linux fwrite写入中文,linux的fwrite()使用方法,当前时间写入文本的程序
查看>>
linux rpm deb系,linux deb系 rpm系 配置路由
查看>>
c语言中的16进制坐标计算器,16进制计算器
查看>>
c sftp类库 linux,libssh sftp.c sftp_mkdir函数二次释放漏洞
查看>>
c语言编辑strcmp,C语言实现strcmp
查看>>
c语言程序设计流程图,C语言课程设计————写下流程图! 谢谢
查看>>
降序排列 输入个数 成绩 C语言,23个C语言上机踢
查看>>
500以内的自然数求和c语言,二个超长正整数的相加
查看>>
在c语言中创建两个线程,如何用C语言实现多线程
查看>>
c语言组播报文接收编程,组播报文收发方法及系统与流程
查看>>
linux 声音设置,Linux aumix设置音效装置命令详解
查看>>
龙井linux,Linux兼容内核(longene)“龙井”让Linux可以运行Win程序
查看>>
linux改成16位寄存器,如何在16位单片机上移植linux
查看>>
android命令安装apk,关于android:从命令提示符安装apk文件?
查看>>
猜字母游戏 html5,科技常识:html5 canvas-2.用canvas制作一个猜字母的小游戏
查看>>
html语言中怎么上传图片,HTML5中怎么访问本地图片,然后上传到页面显示?
查看>>
HTML根据表单选择显示不同,HTML为同一表单设置不同的action
查看>>
html 上下移动箭头,css上下左右箭头
查看>>
html中伪类选择符,【CSS选择符】伪类和伪元素
查看>>
html 绝对定位案例,css绝对定位absolute实例讲解
查看>>