我的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”开头。
如何根据排名中的数字大小来查询结果?
...谢谢
答案 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>";
}