mysql 怎么获取最大值的那条记录

嘿,当谈到 MAX() 和 MIN() 函数时,您已经遇到了很多陷阱。
我记得有一年夏天,我在一家小公司做数据库维护。
当时我们还在使用MySQL 5 .5 版本。
有一次,有同事来找我,说他们用MAX()函数查询订单表中的最大订单数,但是出现的数据是错误的。
订单号是9 9 9 9 ,但是数据库里的结果是9 9 9 8
看到这里,我有点明白了。
订单号字段的类型为 VARCHAR。
根据字符串比较,数字9 9 9 8 自然在9 9 9 9 之前。
我当时向他们解释说,必须将字符串转换为数字才能比较大小。
于是,我立即向他们展示了如何使用 MAX(CAST(id AS UNSIGNED)) 来获取最大值,问题就解决了。

后来我在一个电商项目中也遇到了类似的问题。
当时查询的是每个用户的最大下单金额,但是因为包含了货币格式,所以订单金额是VARCHAR类型存储的。
我通过像 MAX(CAST(amount AS DECIMAL(1 0,2 ))) 这样的写法解决了这个问题。

再说一下MIN()函数,这个函数也让我头疼了一段时间。
有一次,一位客户报告说,他使用的报告中显示的最低库存数量不正确。
我一看,库存字段也是VARCHAR,格式是“1 000”或者“2 000”。
我直接用了MIN(CAST(stock AS UNSIGNED)),结果还是错误。

我仔细查了数据,发现数据库里存的是“2 000”,但是显示的时候多了一个小数点,变成了“2 000”。
这导致比较被视为“2 000”而不是“2 000”。
最后我决定用正则表达式去掉逗号和小数,然后用MIN()函数,问题就彻底解决了。

说到底,这些工作本身并没有什么问题。
关键是根据字段数据类型和实际业务需求灵活使用。
不过说起来,我还从来没有遇到过使用 MAX() 和 MIN() 函数来操作日期类型字段。
我不敢谈这个。
毕竟每个人的数据库应用场景都不同。

SQL:如何按条件选出列值最大的所有行

是的,这就是问题所在。
我以前见过他。

求最大值,TOP1 和ORDER BY,写法是:select TOP 1 DisplaySequence from t order by DisplaySequence desc。

要确定多个数据点的最大值,请使用 MAX()。
示例:从id的表组中选择id、MAX(列名)。

两种方法,TOP1 和ORDER BY适合求单列的最大值,MAX()适合多列。

表结构和字段名不正确,无法检测到错误。

多个记录具有相同的最大值,两种方法都可以找到它们。

如果要查找特定信息,请添加条件或子查询。

大数据使用索引来优化查询。

灵活解决最大值问题。
你自己看看吧。