SQL 降序值不正确

Posted

技术标签:

【中文标题】SQL 降序值不正确【英文标题】:SQL Descending value incorrect 【发布时间】:2019-04-20 18:46:15 【问题描述】:

我正在为一个游戏创建一个仪表板项目,在我的表格中,高分显示为 900,但是有些值高于该值,这怎么可能。

这是我的原型网站的示例截图 Sample Image Here

这是我使用的查询 显示高分

SELECT max( highscore ) as max FROM users

餐桌

SELECT id,username, highscore FROM users ORDER BY highscore DESC

这是我的表格格式

Ranking || Highscore ||
1       ||  945      ||
2       ||  905      ||
3       ||  823      ||
4       ||  3457     ||
5       ||  2680     ||

我希望最高值 (3457) 排在第一位,但 945 总是排在首位,并且顺序被破坏了我希望提供的示例图像能帮助我在网上解释事情真的很糟糕

谢谢,给您带来的不便深表歉意

【问题讨论】:

您没有为我们提供足够的信息来处理。我的第一个想法是 MAX 被意外地用于字符串,因为 9 高于 2。这就是我的逻辑所说的。 哎呀,我真的不擅长在网上解释事情 运行sql语句desc users;并发布输出。 (编辑您的问题并添加它,格式化,不要放在评论中) 向我们展示您的数据库架构。 抱歉回复晚了,我已经编辑了我的问题,再次抱歉 【参考方案1】:

也许您将 Highscore 列声明为 varchar?如果您尝试此查询:

SELECT id,
       username, 
       highscore 
FROM users 
ORDER BY CAST(highscore as int) DESC

SELECT max( CAST(highscore as int) ) as max 
FROM users

如果你把它转换成整数会输出什么?

【讨论】:

以上是关于SQL 降序值不正确的主要内容,如果未能解决你的问题,请参考以下文章

尽管行是时间戳,但 SQL 声称日期时间值不正确

PHP:分配后的值不正确

SQL - 组中的 Max() 值不起作用

字段“签名”的值不正确:值为 662655099,但应为 67324752

日期时间值不正确 数据库错误号:1292

v2 的值不正确