MySQL中的max函数你真的会用吗?

MySQL中的max函数你真的会用吗?

游戏|数码彩彩2024-03-10 7:41:02471A+A-
MySQL中的max函数你真的会用吗?

 

 

在MySQL我们经常会用到count,max,min这些函数,但是在使用这些函数的时候你确定你写的sql一定正确吗?话不多说,我们来个需求。

假设现在有一张消费表如下:

MySQL中的max函数你真的会用吗?

 

现在我们需要取出每个用户购买最多的商品名。看似一个很简单的需求,基本上都能在脑海里想出来下面的SQL。

SELECT max(num),user_id,goods_name FROM tb_user_consume GROUP BY user_id LIMIT 10;

从语句上面看,好像没有什么问题都满足需求,我们执行下来验证下。返回的结果如下:

MySQL中的max函数你真的会用吗?

 

感觉有点不对劲,难道1号商品这么畅销吗?大家都是买1号商品,我们来看下原始数据。

MySQL中的max函数你真的会用吗?

 

我们很清楚的看出来了,1000001 购买的商品是2号商品居多,结合上面的查询结果来看,max(num)似乎没有问题,那么出问题似乎的是在goods_name的显示上。查下网上的教程查询的结果集都只会包含group的那一列,和max的结果值。那么我们还得自己来想解决办法,做一个子查询先按照user_id分组取出最大的num值,创建临时表和源表用user_id和num查询,于是就有了下面的SQL。

SELECT a.user_id,a.`goods_name`,a.num FROM tb_user_consume a JOIN (SELECT user_id , max(num) AS num FROM tb_user_consume where user_id < 1000010 GROUP BY user_id) b ON a.user_id = b.user_id AND a.num = b.num;

查询结果为

MySQL中的max函数你真的会用吗?

 

对比数据发现查询结果准确无误。所以千万不能偷懒使用简单的使用max查询其他列。

点击这里复制本文地址 版权声明:本文内容由网友提供,该文观点仅代表作者本人。本站(https://www.angyang.net.cn)仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

昂扬百科 © All Rights Reserved.  渝ICP备2023000803号-3网赚杂谈