简单订单由DESC无法正常工作

时间:2014-07-22 07:05:07

标签: php mysql

这是我第一次使用MySQL,我似乎无法理解为什么这个简单的查询不起作用,

  • 我正在尝试按avg_total 对用户进行排序(平均值 总= highest_score / num_tries)。

  • 我不想显示得分最高的用户 (最高得分的默认SQL值为none,我的应用程序覆盖 成功完成应用程序的最后一个阶段

因此我认为我的查询会是这样的:

$query = "SELECT pic_square,name,highest_score,num_tries,avg_total FROM users WHERE NOT highest_score = 'none' ORDER BY avg_total DESC";
  

很遗憾,我的结果并非基于DESCENDING订单排序   他们的平均总数,出于某种原因:

我认为它应该是这样的:

  1. Phanos
  2. 马大
  3. 尼古拉斯
  4. 代替:

    1. 马大
    2. 尼古拉斯
    3. Phanos
    4. MySQL order by query example image and results

3 个答案:

答案 0 :(得分:2)

对点使用INT列类型,而不是CHARVARCHAR其他字符串类型。

对于空值,请使用0NULL(取决于具体情况),而不是'NONE'

答案 1 :(得分:1)

尝试将avg_total转换为float:

$query = "SELECT pic_square,name,highest_score,num_tries,(convert(avg_total, float))FROM users WHERE highest_score <> 'none' ORDER BY avg_total DESC";

答案 2 :(得分:1)

此处的问题是您的数据类型为avg_total列。如果您将您的数据类型从varchar更改为float,它将正常工作。