这是我第一次使用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订单排序 他们的平均总数,出于某种原因:
我认为它应该是这样的:
代替:
答案 0 :(得分:2)
对点使用INT
列类型,而不是CHAR
,VARCHAR
其他字符串类型。
对于空值,请使用0
或NULL
(取决于具体情况),而不是'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
,它将正常工作。