重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在mysql中使用group by进行分组后取某一列的最大值,我们可以直接使用MAX()函数来实现,但是如果我们要取最大值对应的ID
松阳ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
那么我们需要取得整行的数据该怎么办?
起初搜寻到的资料是这样的:
首先按照 create_time 倒叙排序,然后分组,那么每个分组中排在最上面的记录就是时间最大的记录
但是结果不是这样的,经过搜集资料,得出需要在排序后边加 limit 10000000000
如果不加的话,数据不会先进行排序,通过 explain 查看执行计划,可以看到没有 limit 的时候,少了一个 DERIVED 操作。
查询第三大值:select A, max(B) as thirdB from test
where B not in (select top 2 B from test order by B desc)
--这里就把第一、二大的数去掉了
group by A;
T是表,G是组,V是值:
分组、求和、求最大值:select G,MAX(SUM(V)) V1 from T group by G;
求比值:
select T.G,SUM(T.V)/A.V1
from T,
(select G,MAX(SUM(V)) V1 from T group by G) A
where T.G=A.G
group by T.G;
试试看,我没测试。
你好,很高兴回答你的问题。
假设是要按照表t中的字段a进行分组,取分组中b字段的最大值,那查询sql是下面这样:
select a,max(b) from t group by a。
如果有帮助到你,请点击采纳。
select * from 表 where 值 in(select max(值) from 表 group by 组)
思路就是先分组,然后获取每个组的最大值,最后再根据这个值,查询到左右符合条件的数据
如果不写group by ,就是获取整张表的最大值。
同理,获取最小值也是这个思路。
因为你给的信息不多,所以只能给到这里。麻烦采纳一下,谢谢
其实这个方法有问题应该这样写
select table1_id,max(age) age from table2 group by table1_id
你的where条件 a.table1_id=table1_id是判断当前table1_id的值age是不是最大的