如何在mysql中按顺序显示数字

如何在mysql中按顺序显示数字,mysql,Mysql,我的数据库表中有4列,名称为id、编号、城市、国家。当我搜索国家时,我显示了该国的所有首都城市,但问题是它以非顺序顺序显示 1 lahore pakistan 10 karachi pakistan 2 peshawar pakistan 我尝试按顺序写y号,但在这里失败的是mu查询 $mysql= mysql_query("SELECT * FROM `country` WHERE country ='$name' ORDER BY number ASC "); 所以

我的数据库表中有4列,名称为id、编号、城市、国家。当我搜索国家时,我显示了该国的所有首都城市,但问题是它以非顺序顺序显示

1   lahore    pakistan
10  karachi   pakistan
2   peshawar  pakistan
我尝试按顺序写y号,但在这里失败的是mu查询

$mysql= mysql_query("SELECT * FROM `country` WHERE country ='$name' ORDER BY number ASC ");

所以我不明白我错在哪里。

原因是你的号码不是一个真正的号码。这是一根绳子。所以在“顺序”中,10紧跟在1之后

您需要将该字段设置为一个数字,或者在拉取它时需要转换该值

转换的语法:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
您应该能够在ORDER语句点添加转换,如下所示:

$mysql= mysql_query("SELECT * FROM `country` WHERE country ='$name' ORDER BY CONVERT ( numeric(10) , number) ASC ");

然而这会起作用,而且所有。。。更好、更正确的解决方案是使用正确的数据类型。也就是说,将字段转换为表中的数字类型。这样以后就不必写这样的东西了。

您的数字字段看起来像字符串类型(varchar)。使用整型数据类型更改表的数字字段。然后尝试相同的查询。 在字符串中,10在2之前,所以您得到的结果是1102


Alter table将解决您的问题。:)

你是按号码订购的。假设这是一个数字字段,您将得到
1,2,10
。你为什么不按城市排序呢?只要把你的编号改成整数或其他任何数字。我不是按城市排序,我是按整数编号排序的。你完全理解我的问题,我面临的问题是相同的,当达到9时,我会按顺序排列。你能写完整的查询吗若要在查询中转换,请在请求中添加其他内容。请尝试使用无符号整数代替数字。您还可以尝试在选择级别和订单级别进行转换。没关系。如果您可以共享您的php代码,那么在数据库中不在phpIt中按顺序显示的int格式的chnage number数据类型会更好,也更易于调试。如果(isset($\u POST['submit']){$code=$\u POST[“text”];$session=$\u POST[“term”];$mysql=mysql\u query(“从
subject
中选择*,其中subject='$code'和session='$session'按q_编号ASC排序”);而($row=mysql\u fetch_数组($mysql)){$questionnum=$row['q_编号];$question=$row['question'];$marks=$row['marks'];$answer=$row['answer'];?>if(isset($U POST['submit'])){$code=$\u POST[“text”];$session=$\u POST[“term”];$mysql=mysql\u query(“从
subject
WHERE subject='$code'和session='$session'按q\u编号ASC排序”);而($row=mysql\u fetch\u数组($mysql)){$questionnum=$row['q\u编号];$question=$row['question'];$marks=$row['marks';$row['marks';$response=$row['response']?>