Mysql выбирают порядок действиями как строка, не число

Как Вы заказываете числом, если Ваше число может упасть ниже и быть больше, чем 0?

Таблица Example Mysql:

|Name|Karma|
 __________
|Me  | -8  |
|Bill|  5  |
|Tom |  2  |
|Saly|  0  |
|San.| -3  |

Запрос Select в качестве примера

$sql="SELECT karma FROM table ORDER BY karma DESC";

Результат, который я получаю, является этим (разделенный запятой): 5,2,0,-8,-3. Разве это не должно быть 5,2,0,-3,-8? Я обнаружил где-нибудь в Интернете, что mysql заказывает строкой. Как заставить его заказать числом?

6
задан Aistis 1 July 2010 в 19:21
поделиться

2 ответа

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

Преобразуйте столбец в INT , и он упорядочит числовой порядок.

У вас также есть возможность не изменять таблицу, но приводить столбец к нужному типу при сортировке:

SELECT karma FROM table ORDER BY CAST(karma AS int) DESC

но это плохо для производительности.

17
ответ дан 8 December 2019 в 03:00
поделиться

Есть еще один странный вариант:

SELECT karma FROM table ORDER BY karma+0 DESC
14
ответ дан 8 December 2019 в 03:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: