mysql连接超时时间查询

发布时间: 2023-11-21 11:48 阅读: 文章来源:1MUMB2198PS

业务需求:查询出客户多次做的核酸信息的最新的一条。

想要查出的数据——同组最新时间的一条

方法一:子查询找出按客户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,若是插入时间在最新一条时间之前,降序查找就会找到时间次新的一条记录。方法三,不推荐,数据量太大会出问题。

•••展开全文