mysql的group by查询
下面是多种写法,针对使用group by后得到最新记录的测试及结果:
说明:我在测试的时候,因为我的表数据在增加,得到最新的数据可能不同
-- 1、得到每个分组中id最小的那条记录
select * from pic where point_code in('XX00024', 'XX00016', 'XX00025') and addtime > '2018-09-03'
group by point_code
-- 37033746 XX00016 长江大桥路口 http://xxx/10.58.237.73_01_20180903001241103.jpg 2018-09-03 00:12:41
-- 37033631 XX00024 沱六桥路口 http://xxx/10.25.77.3_01_20180903000355528.jpg 2018-09-03 00:03:55
-- 37033485 XX00025 高新区立交桥 http://xxx/10.210.98.143_01_20180903000211230.jpg 2018-09-03 00:02:11 -- 2、意图,先通过子查询,按照ID降序,得到每个分组中最新的一条记录
select * from
(
select * from pic where point_code in('XX00024', 'XX00016', 'XX00025') and addtime > '2018-09-03' order by id desc -- limit 1000
) tt
group by point_code;
-- 结果还是每个分组最小的记录,与第一种写法结果相同 -- 3、在第二种写法的子查询周添加了一个limit,limit后面的数字大于你查询的总条数即可
select * from
(
select * from pic where point_code in('XX00024', 'XX00016', 'XX00025') and addtime > '2018-09-03' order by id desc limit 10000000000
) tt
group by point_code;
-- 结果返回每个分组中最新的那条记录
-- 37064239 XX00016 长江大桥路口 http://xxx/10.58.237.73_01_20180903144242037.jpg 2018-09-03 14:42:42
-- 37064240 XX00024 沱六桥路口 http://xxx/10.25.77.3_01_20180903143857383.jpg 2018-09-03 14:38:57
-- 37064139 XX00025 高新区立交桥 http://xxx/10.210.98.143_01_20180903143713651.jpg 2018-09-03 14:37:13 -- 4、在第一中写法的group by后面添加一个desc
select * from pic where point_code in('XX00024', 'XX00016', 'XX00025') and addtime > '2018-09-03'
group by point_code desc
-- 返回结果是每个分组的最新记录
-- 37064139 XX00025 高新区立交桥 http://xxx/10.210.98.143_01_20180903143713651.jpg 2018-09-03 14:37:13
-- 37064240 XX00024 沱六桥路口 http://xxx/10.25.77.3_01_20180903143857383.jpg 2018-09-03 14:38:57
-- 37064239 XX00016 长江大桥路口 http://xxx/10.58.237.73_01_20180903144242037.jpg 2018-09-03 14:42:42 -- 5、一般我们在查询结果都会按照一定规则进行排序,对第四种写法进行排序
select * from pic where point_code in('XX00024', 'XX00016', 'XX00025') and addtime > '2018-09-03'
group by point_code desc order by point_code
-- 返回结果又变成了每个分组的最小记录了
-- 37033746 XX00016 长江大桥路口 http://xxx/10.58.237.73_01_20180903001241103.jpg 2018-09-03 00:12:41
-- 37033631 XX00024 沱六桥路口 http://xxx/10.25.77.3_01_20180903000355528.jpg 2018-09-03 00:03:55
-- 37033485 XX00025 高新区立交桥 http://xxx/10.210.98.143_01_20180903000211230.jpg 2018-09-03 00:02:11 -- 6、将第五种写法的排序,放到分组外边
select * from
(
select * from pic where point_code in('XX00024', 'XX00016', 'XX00025') and addtime > '2018-09-03'
group by point_code desc
) t order by point_code
-- 返回的结果又是每个分组的最新值
-- 37064239 XX00016 长江大桥路口 http://xxx/10.58.237.73_01_20180903144242037.jpg 2018-09-03 14:42:42
-- 37064240 XX00024 沱六桥路口 http://xxx/10.25.77.3_01_20180903143857383.jpg 2018-09-03 14:38:57
-- 37064139 XX00025 高新区立交桥 http://xxx/10.210.98.143_01_20180903143713651.jpg 2018-09-03 14:37:13
在使用group by希望得到最新的数据时,如果想采用子查询先行排序,注意需要添加limit才会生效,这是我的测试结果
网上百度了一些,许多博客,没有写limit好像也生效了,不知道是不是mysql不同的版本问题。
好像只能针对单表进行这样操作,表连接好像就没有效果了
mysql的group by查询的更多相关文章
- mysql having,group by查询去除重复记录
http://m.jb51.net/article/39302.htm 可以这样去理解group by和聚合函数 http://www.cnblogs.com/wuguanglei/p/4229938 ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- 【mybatis】【mysql】mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains no ...
- mysql group by 查询非聚集列
本文为博主原创,转载请注明出处: mysql使用group by可以使用一些聚合函数,可以计算最大值(max(column)),最小值(min(column)),总和(sum(column)),平均数 ...
- MYSQL使用group by,如何查询出总记录数
比如有这样一条SQL,根据t.user_id,t.report_date两个字段统计 这样前端页面能展示数据,但往往需要一个总记录数,在有分页的情况下用到 一种解决方法是在外面套一层,然后对其coun ...
- mysql多表联合查询
转自:http://www.cnblogs.com/Toolo/p/3634563.html 多表连接,小分三种(笛卡尔积.内连接.外连接),多分五种 (笛卡尔积.内连接.左连接.右连接.全连接(my ...
- MySql学习(三) —— 子查询(where、from、exists) 及 连接查询(left join、right join、inner join、union join)
注:该MySql系列博客仅为个人学习笔记. 同样的,使用goods表来练习子查询,表结构如下: 所有数据(cat_id与category.cat_id关联): 类别表: mingoods(连接查询时作 ...
- 转:深入研究mysql中group by与order by取分类最新时间内容
鉴于项目的需要,就从网上找到该文章,文章分析得很详细也很易懂,在android里, (不知道是不是现在水平的限制,总之我还没找到在用ContentProvider时可以使用子查询),主要方法是用SQL ...
- mysql里group by按照分组里的内容的排序
得到一张表里按u_id分组,按count(id)排序,每个分组的pub_time最大的哪些记录,只取count(id)最大的4条 select a.u_id,a.name,a.u_name,a.id, ...
随机推荐
- 写入MySQL报错超出 max_allowed_packet 的问题
写入MySQL报错超出 max_allowed_packet 的问题. MySQL会根据配置文件会限制server接受的数据包的大小.如果写入大数据时,因为默认的配置太小,插入和更新操作会因为 max ...
- django生产环境启动问题
unavailable modifier requested: 0 环境: nginx+uwsgi+django *** Starting uWSGI 2.0.16 (64bit) on [Wed J ...
- SQL行列转置
今天给公司同事们出了一道例行考试题,要求写一句SQL语句从上面表转换为下面表,经过艰难思索,一个同事做了出来. 小区 总数 A类车 B类车 C类车建业森林半岛 2 ...
- nginx: [error] CreateFile() "E:\nginx\nginx-1.9.3/logs/nginx.pid" failed
nginx: [error] CreateFile() "E:\nginx\nginx-1.9.3/logs/nginx.pid" failed nginx: [error] Op ...
- [C++]竞赛模板·数据统计与IO(重定向版与非重定向版)
/* 数据统计与IO 重定向版模板 描述:本机测试用文件数据流重定向,一旦提交到比赛就自动“删除”重定向语句 */ # define LOCAL #include<stdio.h> # ...
- luogu P4314 CPU监控
传送门 这是个远古巨坑阿qwq 没有历史最大值还是能比较好做的.可能会有一个想法,就是直接维护线段树每个结点出现过的历史最大值,每次最大值变化就更新.但是有个问题:可能一个点能影响历史最大值的标记还没 ...
- nnet3中的数据类型
目标与背景 之前的nnet1和nnet2基于Component对象,是一个组件的堆栈.每个组件对应一个神经网络层,为简便起见,将一个仿射变换后接一个非线性表示为一层网络,因此每层网络有两个组件.这些旧 ...
- 【blog】SpringBoot普通类中如何获取其他bean例如Service、Dao
自己写工具类 工具类 import org.springframework.beans.BeansException; import org.springframework.context.Appli ...
- Print Article(斜率DP入门+单调队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3507 题目大意:给你n个数,然后问你怎么分割当前的这n个数位那几组,使得每一组的权值加起来最大.每一组 ...
- mysql 8.0 ~ 索引优化
一 简介:今天来聊天mysql8.0关于索引二 增强1 支持隐藏索引,这个可以用来测试创建的索引是否具有优化作用 创建 alter table t1 alter index u1 invisibl ...