2011-02-16 77 views
0

我最近在我的查詢中使用了最少的(tb1,tb2,tb3)AS名稱來獲取跨多列的最小值,並檢查它們是否不等於默認值的0.00MySQL LEAST()函數不返回結果的問題

到目前爲止,它工作正常,併爲我打算,以及遠程服務器上的腳本版本工作正常。

但是,在改變了列的默認值和NULL狀態之後(我試圖看看是否可以使用NULL而不是0.00,在閱讀了LEAST文檔之後,我不會想要這樣做),然後重新 - 導入我最初使用的表格。它仍然不像以前那樣工作,因爲沒有明顯的原因,我的使用LEAST()的查詢根本沒有返回,空數組,也沒有可見的錯誤消息。

我已重新啓動MySQL,刷新表,拉遠程腳本來測試我的開發服務器上,似乎沒有任何工作。

在我的開發人員和遠程服務器上通過phpmyadmin在表上運行相同的查詢返回相反的結果,本地返回零行,遠程返回行,兩者都具有相同的EXPLAIN結果(除了表中的#rows )。

從查詢中刪除LEAST()函數,確實會在我的開發服務器上返回數據。

下面是一個例子查詢:

SELECT id, make, model, LEAST(r24ch10k, r36ch10k, r24ch15k, r36ch15k, r24ch20k, r36ch20k) AS lowest 
    FROM xml 
    WHERE LEAST(r24ch10k, r36ch10k, r24ch15k, r36ch15k, r24ch20k, r36ch20k) != 0.00   
    ORDER BY lowest LIMIT 5 

我的本地服務器信息
服務器版本:51年1月5日,社區
的Apache/2.2.16(的Win32)PHP/5.3.3
MySQL客戶端版本:5.0.7 mysqlnd-dev的 - 091210 - $修訂:300533 $
PHP擴展:mysqli的

我的遠程服務器信息
Server版本:5.0.51a-24 + lenny5
的Apache/2.2.16 PHP/5.3.3
MySQL客戶端版本:5.0.51a
PHP擴展:mysql的

將不勝感激,幫助解決這個問題。

+0

如果任何列是空的,你想要的`LEAST()`返回`0`? – 2011-02-16 21:59:28

+0

我想返回不等於指定列的最小值0.00 – 2011-02-16 22:04:58

回答

0

我在MySQL論壇上找到了一些幫助的答案。

由於我正在尋找的是最低值,因此將默認值設置爲最低可能值是我犯錯的地方。

我已將列的默認值設置爲較高的值(9999999999.99),添加到這些列的值將永遠不會超過默認值。

所以不是

WHERE LEAST(col1, col2, col3) != 0.00 

我會用

WHERE LEAST(col1, col2, col3) != 99999999999.99 
0

不知道這是否會有所幫助,LEAST()

之前從MySQL 5.0.13開始,最()返回NULL 只有當所有參數都爲NULL。 從5.0.13開始,如果任何 參數爲NULL,它將返回NULL。