mysql多条件排序查询
概述数据库中的数据直接呈现出来一般不是我们想要的,所以我们上两节演示了如何对数据进行过滤的方法。除了对数据进行过滤,我们可能还需要对数据进行排序,比如想从列表中了解消费最高的项,就可能需要对金额字段做...
2024.11.22业务需求:查询出客户多次做的核酸信息的最新的一条。
想要查出的数据——同组最新时间的一条
方法一:子查询找出按客户id分组中的最新的时间,再左连接找出对应的客户信息。
selectb.* FROM( select max( REPORT_TIME ) REPORT_TIME FROM customer_antigen GROUP BY CUSTOMER_ID ) aLEFT JOIN customer_antigen b ON a.REPORT_TIME = b.REPORT_TIME方法二: 按降序分组查询,在group by 字段 后面加上 desc 降序
原因:mysql在分组group by的时候,默认取的排序后的id的第一条,而且mysql是先执行group by,后执行 order by的,所以排序是分组之后的事。加上desc后,由默认id升序变为降序
select*FROMcustomer_antigen GROUP BYCUSTOMER_ID DESC方法三:先子查询排序 limit 1000,再根据客户id分组
原因:mysql 5.7 默认是子查询里排序是失效的,加上limit才有效。
这种方法不推荐,如果数据量很大的话会漏掉很多数据。
select* FROM( select * FROM customer_antigen ORDER BY REPORT_TIME DESC LIMIT 10000 ) a GROUP BYCUSTOMER_ID结果——查出最新时间记录
总结:mysql三种查出同组中最新时间的记录,方法一,是最有效的,因为子查询只查了一个字段。方法二,可能会出现bug,若是插入时间在最新一条时间之前,降序查找就会找到时间次新的一条记录。方法三,不推荐,数据量太大会出问题。
概述数据库中的数据直接呈现出来一般不是我们想要的,所以我们上两节演示了如何对数据进行过滤的方法。除了对数据进行过滤,我们可能还需要对数据进行排序,比如想从列表中了解消费最高的项,就可能需要对金额字段做...
2024.11.22随着项目运行的时间越来越长,有些数据的存储也会越来越大,比如一些点击量,浏览量量,单表的数据可以到达上千万条数据,这时候会存在单表数据过大,查询效率低的问题。为了提高查询效率这时候需要对单表进行拆分,...
2024.11.21go 原生提供了对数据库的支持,就是 database/sql 包,对关系型的数据库进行了通用的抽象,轻量、面向行的接口,所以使用这个包还需要下载对相应的数据库驱动,比如 mysql 的驱动包 git...
2024.11.21本文作者:鲁越问题背景:客户将mysql从IDC迁移至公有云后,时常有出现建立连接超时的情况,业务使用的场景是PHP短连接到mysql,每秒的新建连接数在3000个左右,这个量算是比较大。 客户反馈在...
2024.11.22蛇姐镇楼查看最大连接数量show variables like ‘max_connections‘;查看使用连接数量show global status like ‘max_used_connecti...
2024.11.15