我有一个简单的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>";
}