我在一列上尝试max()和min()函数,但它给了我错误的结果。
数字是1500,500,200,800和700.
当我查询
时select max(trip_total_catches_kg)
from trips
它给我结果800,它应该是1500,最小值给我1500.
为什么它给我错误的结果?
答案 0 :(得分:2)
作为评论中提到的@marc_s,我会仔细检查trip_total_catches_kg
列的类型是否为数字(integer
),而不是字符串(varchar(255)
)。
如果列是字符串类型,您描述的行为将有意义,如@marc_s所说:
800
是“最大” - 因为第一个位置的数字8
是这些字符的最大
答案 1 :(得分:1)
如@marc_s评论的那样...... 这是因为列类型,它是char / varchar而不是整数。
这是一个sqlfiddle作为演示。 http://sqlfiddle.com/#!2/0ab63/1
将您的列转换为整数。
alter table trips修改trip_total_catches_kg int;
答案 2 :(得分:0)
也许值的类型为varchar
,将它们转换为integer
,然后获取max
或min
:
SELECT MAX(CONVERT(trip_total_catches_kg,UNSIGNED INTEGER))
FROM trips;
答案 3 :(得分:0)
最简洁的回答:
select max(0 + trip_total_catches_kg) from trips;