0

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

$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

4 回答 4

1

将数据类型更改为数字,例如 double、real、float。尝试一下。

于 2012-12-18T08:24:21.557 回答
0

制作ppg双精度、实数或任何数字,而不是 varchar。

于 2012-12-18T08:21:10.903 回答
0

如果您不想触摸您的结构,请使用 ORDER BY ABS(ppg)

于 2012-12-18T08:23:53.257 回答
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 />";
}
于 2012-12-18T08:29:59.630 回答