SQL查询未正确执行DESC

时间:2017-12-15 15:42:18

标签: mysql sql database

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

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

我的数据库中有四个值pris0, 4, 8, 26

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

  • 26
  • 8
  • 4
  • 0

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

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

1 个答案:

答案 0 :(得分:5)

看起来您的列是VARCHAR类型,并且它按照它排序。当你订购一个VARCHAR时,你会在每个角色上从左到右,所以26在0到4之间。

如果您无法更改架构,可以试试这个:

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

注意:这与理想的解决方案无关!如果将列视为数字,则应更改应用正确类型的模式。