获取分组后取某字段最大一条记录

一、背景

  在消息群里看到有人在发一个sql的问题:测试在一张表里面,有两个字段type,priority ,要求查询每个type中优先级最高的记录数据,即先找到每个type中优先级最高的,然后通过和自己本身表的联查来找出这一条记录。自己有兴趣研究问题就做了做,然后在网上百度学习了下。

二、创建table

CREATE TABLE `test1` (
  `auto_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `type` varchar(5) NOT NULL COMMENT '类型',
  `priority` int(2) DEFAULT '0' COMMENT '类型优先级, 0最低优先级,1,2,3',
  PRIMARY KEY (`auto_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='徐XX创建,用来测试在一张表里面,有两个字段type,priority ,要求,查询每个type中优先级最高的数据'

三、写sql语句

  我的sql语句:

select a.* from test1 as a join (select type, max(priority) as priority  from test1 group by type) as b
on a.type = b.type and a.priority = b.priority;

四、有其他的方法,详情请看下面的地址文章

https://www.2cto.com/database/201502/376690.html 【获取分组后取某字段最大一条记录(求每个类别中最大的值的列表)】

你可能感兴趣的:(sql)