Mysql顺序的数字DESC


Mysql ORDER BY numbers DESC

我有一个简单的mysql选择查询在我的PHP代码:

$result = mysql_query("SELECT text FROM example ORDER BY rank DESC");
while($row = mysql_fetch_array($result))
  {
  echo $row['text'] . "<br>";
  }
   text | rank
--------+--------
 google | 245
--------+--------
 yahoo  | 32
--------+--------
 bing   | 12

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

yahoo 
google
bing

我想让Google在前面。我猜雅虎排在第一位,因为它是以"3"开头的。

如何使查询按数字的大小排序?

谢谢…

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

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

SELECT text FROM example ORDER BY rank + 0 DESC

或:

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

您的SQL模式中rank的数据类型是什么?设置为数字类型

试试这个:

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

查看排序是否正确

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