2010-10-31 66 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)