2010-07-27 76 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 

注意,值是文本數據和尾隨空格,因此,其原因是各色排序現在從你如何可能預計。