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, ...
随机推荐
- excel怎么比较两组或两列数据的相同项和不同项
https://jingyan.baidu.com/article/c843ea0b7a2a7477921e4a47.html
- Linux 下装逼技巧
``` 1.下载cmatrix-1.2a.tar.gz文件 [root@localhost ~]# wget https://jaist.dl.sourceforge.net/project/cmat ...
- 07-查询操作(DQL)-多表查询
一. 综述 查询操作主要从两个方面来说:单表查询和多表查询. 多表查询包括:笛卡尔积.外键约束.内连接查询.外链接查询.自连接查询. 二 . 案例设计 1. 设计产品表(product). ...
- http.lua里的装饰器
摘自:http.lua local co_yield = coroutine.yield local co_create = coroutine.create local co_status = co ...
- 细说shiro之五:在spring框架中集成shiro
官网:https://shiro.apache.org/ 1. 下载在Maven项目中的依赖配置如下: <!-- shiro配置 --> <dependency> <gr ...
- HTTP访问控制(CORS)
当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求. 比如,站点 http://domain-a.com 的某 HTML 页面通过 <img ...
- PHP连接数据库实现多条件查询与分页功能——关于租房页面的完整实例操作
租房页面如图: 代码如下: <!DOCTYPE html><html> <head> <meta charset="UTF-8& ...
- 数据库设计理论与实践·<四>数据库基本术语及其概念
一.关系模型 关系模型是最重要的一种数据模型.关系数据库模型系统采用关系模型作为数据的组织方式. 关系模型的数据结构: 关系:一张表 元组:一行记录. 属性:一列 [码(键,key)]:表中的某个属性 ...
- luogu P3237 [HNOI2014]米特运输
传送门 谢特运输 先要搞懂题目是什么意思,简化版题意就是一棵有根树,要使得每个点都满足任意一个儿子的权值等于这个点权值除以儿子数量,问最少要修改多少个点的点权 就可以一边dfs求出每个点权值是点1的多 ...
- 将web项目导入到eclipse中常见错误
将web项目导入到eclipse中常见错误 错误1:string cannot be resolved to a type 原因:这种情况一般是因为你的JDK版本没有设置好,或者设置的有不一致的 ...