按字段顺序mysql命令不起作用,给出错误的顺序

时间:2010-10-31 23:31:38

标签: sql 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且小于6?9。

3 个答案:

答案 0 :(得分:16)

看起来类型列的类型绝对是varchar或text(或任何字符串类型,确实如此)。您 使用整数类型。 字符串“10”小于字符串“6”(1来自6之前)是完全正常的。

如果您确实不想更改列的类型,可以将其转换为整数。

答案 1 :(得分:5)

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

答案 2 :(得分:0)

如果typechar字段,那是正确的。

如果他们是字符,你没有比较数字 6和24,你要比较字符串“6”和“24”。

“6”大于“2”,所以它来了。