SQL-запрос не выполняет DESC правильно

0

У меня проблема, я не знаю, как ее решить. У меня есть этот запрос:

$sql = "SELECT * FROM transfer_centre WHERE status = 'out' ORDER BY pris DESC";

И у меня есть четыре значения как pris в моем db: 0, 4, 8, 26

Поэтому, поскольку в запросе указано, что они должны быть перечислены как таковые:

  • 26
  • 8
  • 4
  • 0

Но почему-то он видит значение 26 как 2.6 (я думаю?), И поэтому 26 находится между 4 и 0?

Может ли кто-нибудь помочь мне в этом вопросе?

Теги:
database

1 ответ

5
Лучший ответ

Похоже, что ваша колонка - тип VARCHAR, и она упорядочивается как она. Когда вы заказываете VARCHAR, вы перемещаетесь слева направо на каждом символе, поэтому 26 находится между 0 и 4.

Вы можете попробовать это, если вы не можете изменить свою схему:

SELECT * FROM transfer_centre WHERE status = 'out'
    ORDER BY CAST(pris as SIGNED INTEGER) DESC

ПРИМЕЧАНИЕ. Это даже не близко от идеального решения! Если столбец рассматривается как число, вы должны изменить схему, применяя нужный тип.

  • 0
    Конечно, все так просто - спасибо!
  • 0
    @ M.Pedersen этот ответ поможет вам убить вашу базу данных.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню