SQL查询未正确执行DESC

M. *_*sen 0 mysql sql database

我有一个问题,我不知道如何解决.我有这个问题:

$sql = "SELECT * FROM transfer_centre WHERE status = 'out' ORDER BY pris DESC";

pris我的数据库中有四个值: 0, 4, 8, 26

因此,正如查询所述,它们应该如下列出:

  • 26
  • 8
  • 4
  • 0

但不知何故,它将26的值视为2.6(我猜?),因此26在4和0之间?

有人可以帮我解决这个问题吗?

Fab*_*ira 5

看起来您的列是VARCHAR类型,并且它是按照它排序的.当您订购VARCHAR时,您会在每个字符上从左到右,因此26介于0到4之间.

如果您无法更改架构,可以尝试此操作:

SELECT * FROM transfer_centre WHERE status = 'out'
    ORDER BY CAST(pris as SIGNED INTEGER) DESC

注意:这甚至不是理想的解决方案!如果将列视为数字,则应更改应用正确类型的模式.