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, ...
随机推荐
- Oracle存储过程procedure in、out、in out 模式参数【不发布,纯转】
Oracle存储过程procedure in.out.in out 模式参数 Oracle存储过程基本语法介绍 注意存过不会自动提交,需要在存过本身添加commit; rollback;等语句
- 067、如何部署Calico网络 (2019-04-10 周三)
参考https://www.cnblogs.com/CloudMan6/p/7509975.html Calico 是一个纯三层的虚拟网络方案,Calico为每个容器分配一个IP,每个host都是 ...
- Python实现代理模式
from abc import ABCMeta, abstractmethod NOT_IMPLEMENTED = "You should implement this." cla ...
- vertica系列:时间相关函数
-- * 注意: 本文的SQL是在 2017-09-14 测试的. 所以如果取当前日期, 结果为 2017-09-14* ------------------------------ 相关数据类型 - ...
- z分数
一.公式 计算过程为样本x的值与样本总体平均值的差,再除以标准差. 当以标准差为单位,要统计样本与均值偏离了多少值时,就用此公式.
- oracle 对现有的表进行列表分区
create tablespace pur120000 datafile 'D:\orcldata\pur120000.dbf' size 1024m reuse autoextend on next ...
- 调用kaldi的模型进行解码
At the moment Kaldi is targeted more at people who are building ASR systems than those who just want ...
- python 的基础学习 第九天 文件的操作
1,文件操作 参数:1,文件路径 2,编码方式,3,执行动作(打开方式),只读,只写,,读写,追加和读写. 1 打开文件,得到文件句柄并赋值给一个变量.2. 通过句柄对文件进行操作.3. 关闭文件 ...
- java中的绝对路径和相对路径
1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:/xyz/test.txt 代表了test.txt文件的绝对路径.http://www ...
- jq的css方法
读属性: $(selector).css(name) 设置属性: 法一: $(selector).css(name,value) 法二: $(selector).css(name,function(i ...