2010-11-18 99 views
0

乾草大家,我有一個MySQL查詢MySQL查詢沒有顯示正確的數據

SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '999' ORDER BY `product` DESC LIMIT 12 OFFSET 0 

這顯然選擇12種產品,其中價格是60和999之間的這種正確顯示的行。

但是如果我增加限制這樣的查詢

SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '1000' ORDER BY `product` DESC LIMIT 12 OFFSET 0 

沒有行得到顯示。任何想法爲什麼發生這種情況'價格'字段是浮動類型字段

+0

更高的價值是價格列字母?如果是的話,那就是失敗的關鍵。 – Kangkan 2010-11-18 11:32:19

回答

2

刪除',因爲字段類型是數字,而不是字符。

+0

這可以解決問題,當數字低於999時它是如何工作的? – dotty 2010-11-18 11:32:21

0

您將'60''1000'視爲字符。使用數字:

where `price` between 60 and 1000 

如果使用VARCHAR字符串,有沒有行將匹配在一個VARCHAR處理between '60' 和 '1000' condition, since '1000' is smaller than「60'`。

它與'999'一起工作,因爲可能有幾個價格介於'6''9'之間。

mysql> select '60' < '9'; 
+------------+ 
| '60' < '9' | 
+------------+ 
|   1 | 
+------------+ 
1 row in set (0.00 sec) 
0

的60,999和1000都得到治療作爲一個字符,而不是浮動或者int

它與999的原因是因爲比較發生在ASCII字符。

對於1000,你不會得到這將對價格與ASCII碼6和1之間開始以來6任行比1。