2010-07-27 96 views
0
select min(lead), max(lead) 
from products 
WHERE part_line != 90 and category = 'x' 

当我运行上述查询时,返回的min大于最大值。如果我删除条件pline!= 90,问题就会消失。MYSQL为什么min会大于max?

我一开始想到mysql在处理min,max之前就已经处理了...但是这并不能解释为什么它会分配更高的分钟。

什么让我,当我得到avg()它正确计算。

发生了什么事?

+15

得到的示例数据?听起来就像你在使用文本/字符串数据类型的列上运行MIN/MAX ... – 2010-07-27 19:37:56

+0

其次,min/max适用于许多不同的数据类型,并且它们还有其他含义,检查数据类型或告诉我们使用什么数据类型:) – Nealv 2010-07-27 19:41:14

+1

甚至没有想过检查,由于某种原因,我的领导领域被设置为varchar ...我改变为int和问题解决。拉着我的头发,从未遇到过这个问题。 OMG小马,发表一个答案,我会接受。 – payling 2010-07-27 19:44:04

回答

8

也许你的领域被视为文本,以便,例如21会比3(排名不分先后)最小 如果字段为TEXT的类型尝试投值INT()

+0

字段是数据类型varchar,转换为整数并解决问题! 感谢您的帮助 – payling 2010-07-27 19:54:43

0

这里是一个SQL Server例如:

with Test_CTE (first, second, third) 
as(
    select '21 ', 'b', 1 
    union 
    select '3 ', 'd', 2 
) 
select MIN(first) as Minimum, MAX(first) as Maximum 
from Test_CTE 

输出

Minimum Maximum 
21  3 

注意,值是文本数据和尾随空格,因此,其原因是各色排序现在从你如何可能预计。