博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[数据库]关于MAX()函数的一个坑
阅读量:4582 次
发布时间:2019-06-09

本文共 605 字,大约阅读时间需要 2 分钟。

之前写了这么一条sql语句,目的是取出表中itemid最大的那一条数据。

SELECT date, MAX(itemid) AS itemid, group FROM mytableGROUP BY group

但是返回来的数据有点出乎意料。

问题是:

date的值并不对应max(itemid)所在行数的值。

比如2016-02-02取到最大的itemid,但是返回来的值确实表中的第一条数据的date值,即2016-01-01。

 

具体原因跟数据库和max函数的机理有关。

据说是mysql的于处理器做了优化,将max函数计算出来的值,使用一个常数值代替。

这样的话,相当于我们执行的是:select date, 1234, group from mytable.

所以数据库返回了第一个撞到的值。

 

翻了下官方的reference,发现查max记录的语句全都是用的subquery,类似如下:

SELECT article, dealer, priceFROM shop s1WHERE price=(SELECT MAX(s2.price) FROM shop s2 WHERE s1.article = s2.article);

 

搜了网上关于max函数的教程中,全都没有提到这一点。

坑略大....

转载于:https://www.cnblogs.com/oDoraemon/p/5439196.html

你可能感兴趣的文章
[SQL] 获取 Microsoft SQL Server 2008 的数据表结构
查看>>
iOS进度指示器——NSProgress
查看>>
C语言strcat,ctrcpy函数原型和改进
查看>>
good bye 2015 B - New Year and Old Property
查看>>
(第4篇)hadoop之魂--mapreduce计算框架,让收集的数据产生价值
查看>>
万年历-农历-农历日期
查看>>
如何辞职
查看>>
SSO 单点登录总结(PHP)
查看>>
Ubuntu16.04下将hadoop2.7.3源代码导入到eclipse neon中
查看>>
朝令夕改的企业不值得留恋
查看>>
springboot踩坑出坑记
查看>>
ovs源码阅读--netlink使用
查看>>
php中引用&的真正理解-变量引用、函数引用、对象引用
查看>>
cmake编译安装mysql 5.6.12
查看>>
第七章学习小结
查看>>
GS LiveMgr心跳管理类
查看>>
设计模式学习笔记(二)之观察者模式、装饰者模式
查看>>
mysql导出数据库和恢复数据库代码
查看>>
走出软件泥潭 第一回 雪上加霜
查看>>
小鸟哥哥博客 For SAE
查看>>