Mysql ORDER BY编号DESC

时间:2011-11-04 16:57:57

标签: php mysql select numbers sql-order-by

我的PHP代码中有一个简单的mysql select查询:

$result = mysql_query("SELECT text FROM example ORDER BY rank DESC");
while($row = mysql_fetch_array($result))
  {
  echo $row['text'] . "<br>";
  }

和这个MySql表:

   text | rank
--------+--------
 google | 245
--------+--------
 yahoo  | 32
--------+--------
 bing   | 12

当我从查询中得到结果时,会显示如下内容:

yahoo 
google
bing

我希望谷歌站在前面。我认为雅虎首先是因为它以“3”开头。

如何根据排名中的数字大小来查询结果?

...谢谢

5 个答案:

答案 0 :(得分:9)

我猜测rank字段是某种字符串类型。将其设为数字​​类型int,它将正确排序

答案 1 :(得分:6)

当然,正确的解决方案是使用正确的数据类型。作为一种解决方法,您可以动态地将数据转换为数字:

SELECT text FROM example ORDER BY rank + 0 DESC

或:

SELECT text FROM example ORDER BY cast(rank as unsigned) DESC

答案 2 :(得分:3)

SQL架构中rank的数据类型是什么?将其设置为数字类型。

答案 3 :(得分:1)

试试这个:

$result = mysql_query("SELECT * FROM example ORDER BY rank DESC");
while($row = mysql_fetch_array($result))
{
  echo $row['text'] . "  ". $row['rank'] ."<br>";
}

看看排名是否正确排序。

答案 4 :(得分:1)

$result = mysql_query("SELECT * FROM `example` ORDER BY `rank` DESC");

while($row = mysql_fetch_array($result))
{
  echo $row['text'] ."<br>";
}