mysql - MAX(Column) 返回错误值

标签 mysql sql

我想从我的发票表中检索最大发票号,当我选择所有您可以清楚地看到最大发票号为“10”的记录时,它会返回以下内容。

select * from invoice

enter image description here

但是当我查询

select MAX(invoice_number) as maxinv from invoice

它返回“9”。这是为什么?

enter image description here

最佳答案

如果您的 invoice_number 存储为文本列,例如varchar(10)。在这种情况下,根据字母顺序,9 将是最大值。

理想情况下,您应该将要对其执行数值运算的值存储为数值数据类型,例如整数。但是,如果由于某种原因您无法更改列数据类型,您可以尝试在应用 MAX 之前强制转换列,如下所示:

select max (convert(invoice_number, signed integer)) as maxinv from invoice

注意:我特别提到“您要对其执行数字运算的值”,因为在某些情况下输入文本完全是数字,例如电话号码或信用卡号,但也有在任何情况下,您都不想添加 2 个电话号码,或者对信用卡号码求平方根。此类值应存储为文本。

关于mysql - MAX(Column) 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25360359/

相关文章:

php - 检查电子邮件地址是否已被使用

mysql - 如何链接(关联)这两个表 MySQL

sql - 在 Ruby on Rails 3 中组合 first_name 和 last_name 列的最佳方法?

php - 按日期排序的 Wordpress PostViews 插件

c# - 循环递归自连接表

sql - Extbase - 从查询中获取创建的 sql

php - 在 MYSQL 中使用单个查询获取 3 个不同 SUM 的 "best"方法是什么

mysql - 查询结果减1

mysql 外键错误 #1452

python - 如何插入分钟 :seconds format time interval to postgresql in right way?