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