Mysql 自然排序不能正确排列数据

Mysql 自然排序不能正确排列数据,mysql,Mysql,我有这组数据,例如: +--------------+-----------+ | Name | Money | +--------------+-----------+ | Mickey Mouse | 1,000,780 | +--------------+-----------+ | Donald Duck | 1,580,870 | +--------------+-----------+ | Goofy | 230,570 | +------

我有这组数据,例如:

+--------------+-----------+
| 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
它仍然在米奇和唐纳德身上表现出高飞

当我使用:

SELECT name, money FROM worth ORDER BY LENGTH(money), money
SELECT name, money FROM worth ORDER BY money +0 ASC
它仍然显示米奇超过唐纳德。唐纳德应该站在最上面


我想按降序排列,这样唐纳德·米奇·高飞就可以了。

我建议将“money”列存储为十进制或双精度,而不是VARCHAR。 但对于您的情况,您可以先按长度递减,然后按金额递减

下面的查询应该适合您

SELECT name, money FROM worth ORDER BY LENGTH(money) desc, money desc;

出于各种原因,将货币存储为varchar是个坏主意——如果可能的话,将其转换为更合适的格式


否则,这有一个答案。

什么类型的列是货币?如果列货币是一个数字,请按DESC排序。较高的值将位于顶部。@skelwa itsvarchar@GcalD解决这个问题。