2010-10-31 4 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

ответ

16

Это определенно выглядит как тип типа столбца - это varchar или текст (или любой тип строки, действительно). У вас есть, чтобы использовать целочисленный тип. Совершенно нормально, что строка «10» меньше строки «6» (1 до 6).

Если вы действительно не хотите менять тип столбца, вы можете применить его к целому числу.

0

Это правильно, если type является полем char.

Если они символы, вы не сравнивая номера шесть и двадцать четыре, вы сравнив строки «6» и «24».

"6" больше, чем "2", так оно и происходит.

5
SELECT `type`, `bought` FROM cars WHERE owner='test' ORDER BY CAST(`type` AS SIGNED) 
Смежные вопросы