由字母数字字段对MySQL查询结果排序
问题描述:
我使用php查询数据库中的表。领域之一是所谓的“等级”栏中,而且具有数据如下所示:由字母数字字段对MySQL查询结果排序
none
1-bronze
2-silver
3-gold
...
10-ambassador
11-president
我希望能够基于该“排名”列中的结果进行排序。任何结果,其中字段是“没有”得到排除,所以那些没有因素正如你可能已经猜到,现在结果回来是这样的:
1-bronze
10-ambassador
11-president
2-silver
3-gold
当然,我想为它被排序以便它如下所示:
1-bronze
2-silver
3-gold
...
10-ambassador
11-president
现在查询作为对象返回。我已经尝试了不同的排序选项,如natsort,sort,array_multisort,但没有按照我确信的方式工作。如果可能,我宁愿将结果保留为对象形式。我将数据传递给下一步中的视图。尽管将物体传递给视图然后在那里完成工作是完全可以接受的。所以这毕竟不是问题。 :)
谢谢你的帮助。我希望我有道理。
答
如何使用该功能进行排序。我认为,如果你得到你应该对象转换为数组的对象,然后使用这个
function arraySubSort($array, $subkey, $sort = 'asort')
{
foreach($array as $key => $value)
{
$temp[$key] = strtolower($value[$subkey]);
}
$sort($temp);
foreach($temp as $key => $value)
{
$result[] = $array[$key];
}
return $result;
}
$data = $your_array;
$field = 'ranks';
arraySubSort($data,$field);
它将与分配领域中的数组进行排序。如果您正在获取多个记录,则可以使用它进行排序。
答
这将工作 -
SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric
听起来数量和描述应该是单独的列... – 2012-04-12 04:12:44
所以有可能在排名列多个数据点?如果是这样,听起来像架构被设计成inccorectly。 – 2012-04-12 04:13:55
等级1,2,3和青铜,银,金在DB的不同领域吧? – 2012-04-12 04:15:15