我有一个问题,我不知道如何解决。 我有这个问题:
$sql = "SELECT * FROM transfer_centre WHERE status = 'out' ORDER BY pris DESC";
我的数据库中有四个值pris
:
0, 4, 8, 26
因此,正如查询所述,它们应该如下列出:
但不知何故,它将26的值视为2.6(我猜?),因此26介于4和0之间?
有人可以帮我解决这个问题吗?
答案 0 :(得分:5)
看起来您的列是VARCHAR类型,并且它按照它排序。当你订购一个VARCHAR时,你会在每个角色上从左到右,所以26在0到4之间。
如果您无法更改架构,可以试试这个:
SELECT * FROM transfer_centre WHERE status = 'out' ORDER BY CAST(pris as SIGNED INTEGER) DESC
注意:这与理想的解决方案无关!如果将列视为数字,则应更改应用正确类型的模式。