SQL Query没有正确排序结果

时间:2012-12-18 08:17:36

标签: php sql

我正在查询我的数据库,从最高到最低返回一组结果。但是,似乎查询并没有完全按照这种方式对结果进行排序。我的代码如下:

$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以上的值?

谢谢,

兰斯

4 个答案:

答案 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 />";
}