Поэтому у меня есть этот набор данных, например:
+--------------+-----------+
| Name | Money |
+--------------+-----------+
| Mickey Mouse | 1,000,780 |
+--------------+-----------+
| Donald Duck | 1,580,870 |
+--------------+-----------+
| Goofy | 230,570 |
+--------------+-----------+
и когда я использую:
SELECT name, money FROM worth ORDER BY LENGTH(money), money
Он все еще показывает Гуфи по Микки и Дональду.
и когда я использую:
SELECT name, money FROM worth ORDER BY money +0 ASC
Он все еще показывает Микки над Дональдом. Где, когда Дональд должен быть наверху.
Я хочу устроить его по убыванию, так что Дональд-Микки-Гуфи.
Я бы предложил хранить столбцы "деньги" как Decimal
или Double
а не VARCHAR
. Но для вашего случая вы можете заказать по длине по убыванию, а затем по убыванию денег.
Следующий запрос должен работать для вас.
SELECT name, money FROM worth ORDER BY LENGTH(money) desc, money desc;
Хранение денег в качестве варчара - плохая идея по разным причинам - конвертируйте ее в более подходящий формат, если это вообще возможно.
В противном случае у этого вопроса есть ответ.
money
?ORDER BY DESC
. Более высокое значение будет сверху.