我正在查询我的数据库,从最高到最低返回一组结果。但是,似乎查询并没有完全按照这种方式对结果进行排序。我的代码如下:
$query = mysql_query("SELECT * FROM ".$stats_table." ORDER BY ppg DESC")or die(mysql_error());
$count = mysql_num_rows($query);
$i = 0;
while($row = mysql_fetch_assoc($query))
{
$team[$i] = $row['team'];
$ppg[$i] = $row['ppg'];
$i++;
}
for($i=0;$i<$count;$i++)
{
echo "".$ppg[$i]." <br /><br />";
}
当我回显ppg列集时,我得到以下结果:
99.7
98.2
97.8
97.4
97.1
96.9
96.8
96.3
96.2
95.5
94.6
94.5
94.3
93.9
93.2
92.8
92.2
91.5
90.8
90.3
106.0
105.9
104.5
103.6
102.6
101.9
101.5
101.3
100.7
100.1
对于所有小于100且超过100的值,它似乎都有效。但是,我怎样才能使这个顺序适用于所有值而不是仅仅在那些小于100以上的值?
谢谢,
兰斯
答案 0 :(得分:1)
将数据类型更改为数字,如double,real,float。试试吧。
答案 1 :(得分:0)
将ppg
设为double,real或任何数字,而不是varchar。
答案 2 :(得分:0)
如果您不想触摸结构,请使用ORDER BY ABS(ppg)
答案 3 :(得分:0)
你可以让PHP对它进行排序。
$query = mysql_query("SELECT * FROM ".$stats_table)or die(mysql_error());
$i = 0;
while($row = mysql_fetch_assoc($query)) {
$team[$i] = $row['team'];
$ppg[$i] = (int)$row['ppg'];
$i++;
}
sort($ppg, SORT_NUMERIC);
for($i=0;$i<count($ppg);$i++) {
echo $ppg[$i]." <br /><br />";
}