mysql取时间最大的一条

发布时间: 2023-11-21 12:13 阅读: 文章来源:1MUMB3337PS

Bili今天做汽车gps定位时写了一段获取最新位置的sql语句,对于新手MySQL学

习及领悟很有帮助,就分享给大家了!!

由于保密条例的限制,只能找其他例子给大家讲了

我们在查询数据时,需要分组后取每组中的最新一条数据(即时间最大的那条)

复制如下 sql 语句建表,添加数据/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50719Source Host : localhost:3306Source Database : jinguiTarget Server Type : MYSQLTarget Server Version : 50719File Encoding : 65001Date: 2019-10-06 14:35:57*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for test-- ----------------------------drop TABLE IF EXISTS `test`;CREATE TABLE `test` ( `id` int(11) NOT NULL, `company_name` varchar(255) DEFAULT NULL, `type` varchar(255) DEFAULT NULL, `create_date` datetime DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of test-- ----------------------------insert INTO `test` VALUES (‘1‘, ‘腾讯‘, ‘1‘, ‘2019-10-06 14:06:48‘);insert INTO `test` VALUES (‘2‘, ‘阿里巴巴‘, ‘1‘, ‘2019-10-18 14:35:11‘);insert INTO `test` VALUES (‘3‘, ‘百度‘, ‘1‘, ‘2019-10-06 14:35:16‘);insert INTO `test` VALUES (‘4‘, ‘小米‘, ‘0‘, ‘2019-10-26 14:35:20‘);insert INTO `test` VALUES (‘5‘, ‘华为‘, ‘0‘, ‘2019-10-06 14:35:25‘);insert INTO `test` VALUES (‘6‘, ‘农业银行‘, ‘2‘, ‘2019-10-06 14:35:28‘);insert INTO `test` VALUES (‘7‘, ‘工商银行‘, ‘2‘, ‘2019-10-10 14:35:32‘);insert INTO `test` VALUES (‘8‘, ‘兴业银行‘, ‘2‘, ‘2019-10-23 14:35:36‘);insert INTO `test` VALUES (‘9‘, ‘浦发银行‘, ‘3‘, ‘2019-10-06 14:35:40‘);insert INTO `test` VALUES (‘10‘, ‘贵州茅台‘, ‘3‘, ‘2019-10-06 14:35:44‘);建表如下

查询思路: 先分组使用 max() 函数查询出每组中最大的时间和类型,将时间字段和类型字段定义为一个新表 tmp,再通过与 tmp 表的时间和类型联合查询,即可查询出每组中的最新一条数据(时间最大的那条数据)。之所以要使用时间和类型两个字段,是因为可能存在不同类型但时间相同的数据

sql 语句如下select * from test t RIGHT JOIN (select type, MAX(create_date) as "createDate" from test GROUP BY type) tmp on (t.create_date = tmp.createDate and t.type=tmp.type)查询结果

•••展开全文