2010-10-31 65 views
2

我有一個奇怪的問題。我在mysql中嘗試這樣的命令:按字段命令mysql命令不起作用,發出錯誤的命令

SELECT `type`, 
     `bought` 
    FROM cars 
    WHERE owner = 'test' 
ORDER BY type 

而且它打印出這個在phpMyAdmin:

type bought 
-------------------- 
17  1281025497 
22  1287708417 
22  1287347244 
24  1287708324 
24  1287876461 
6  1287896659 
9  1287847238 

這沒有任何意義。 17大於22,9小於6?!

+1

您不需要將所有列都置於反引號中。 「買」很可能不是保留關鍵字,並且您沒有將「汽車」和「所有者」置於反引號中,所以最好不要使用反引號,除非您實際上必須使用保留字作爲列名稱(「類型「可能被保留;檢查MySQL文檔) – ThiefMaster 2010-10-31 23:35:57

回答

16

它絕對看起來像類型列的類型是varchar或文本(或任何字符串類型,真的)。你有使用整數類型。 字符串「10」小於字符串「6」(1在6之前)是完全正常的。

如果你真的不想改變你的列的類型,你可以把它轉換爲一個整數。

0

這是正確的,如果typechar字段。

如果他們字符,你不比較數字六24,你比較「6」和「24」。

「6」大於「2」,所以它後來。

5
SELECT `type`, `bought` FROM cars WHERE owner='test' ORDER BY CAST(`type` AS SIGNED)