MySQL MAX和MIN函数返回意外值

MySQL MAX和MIN函数返回意外值,mysql,Mysql,我使用以下SQL请求: SELECT MAX(valeur), MIN(valeur) FROM liste_caracteristiques as L WHERE idCarac = '1' idCarac=1是产品的重量,我将使用JOIN,但为了解释我的问题,我简化了查询 在这张桌子上: |idCarac|int(11) |refproduit|int(11) |valeur|varchar(255) |1|8957|3 |1|9980|1200 |2|8957|8.3cm |2|998

我使用以下SQL请求:

SELECT MAX(valeur), MIN(valeur) FROM liste_caracteristiques as L WHERE idCarac = '1'
idCarac=1是产品的重量,我将使用JOIN,但为了解释我的问题,我简化了查询

在这张桌子上:

|idCarac|int(11)
|refproduit|int(11)
|valeur|varchar(255)

|1|8957|3
|1|9980|1200
|2|8957|8.3cm
|2|9980|15cm
结果是:最大值(valeur)=3,最小值(valeur)=1200

我不明白为什么


e:最大值就是最小值,最小值就是最大值

SELECT MAX(CAST (valeur AS INT)), MIN(CAST (valeur AS INT)) 
FROM liste_caracteristiques as L 
WHERE idCarac = '1'

您得到的“意外”值是什么?最大值是最小值,最小值是最大值
valuer
列的类型是
varchar
,即字符串。使用字典顺序比较这些值<在字典中,code>1200肯定排在
3
之前。如果在列中存储数字,则将其类型更改为
int
,并将单位度量(
cm
)移动到单独的列中。@axiac aaah好的,我现在明白了,但我不能更改类型,因为我不仅在该列中存储重量,也许我应该使用PHP获取最大值和最小值