从高到低:

$query="select * from sponsors order by budget DESC";


从低到高:

$query="select * from sponsors order by budget ";


执行此查询时,它仅按第一位排序。例如:

预算:
95,00,000
6,00,000
300万
29,58,000
22,78,000

我究竟做错了什么?

最佳答案

解决此问题的“正确”方法是重新构建表并将预算划分为两个字段,一个int和一个varchar,它们描述int所指的内容,例如。 “每年”或“进行中”或“每月”或其他。这样,您可以通过int字段正确地排序数据。

在此期间,您应该能够通过以下方式对数据进行排序:从字段的数字部分中去除逗号,然后将其强制转换为无符号整数:

SELECT *
  FROM sponsors
  ORDER BY CAST(REPLACE(budget, ',', '') AS UNSIGNED)


只要所有预算值都以可能包含或不包含逗号的数字开头,此方法就应该起作用。

09-11 16:30