gpt4 book ai didi

php - MySQL ORDER BY 多列 ASC 和 DESC 未按预期工作

转载 作者:行者123 更新时间:2023-11-29 06:11:34 27 4
gpt4 key购买 nike

我有 1 个 mySQL 表。表条目是:

enter image description here

我想在两种情况下显示一个列表。首先是最高的right_answers,也取决于最低的time_spent

我用这个sql代码来检索列表

mysql_query("SELECT * FROM `table_name` WHERE `contest_id` = '2' ORDER BY right_answers desc,time_spent")

我得到这个输出:

enter image description here

我的预期输出应该是:

enter image description here

我尝试了很多次不同的查询,但结果仍然是错误的。你能给我一些解决方案吗?

提前致谢!

最佳答案

我猜你的 time_spent 列有一个 VARCHAR(x) 数据类型,而不是数字数据类型。因此,MySQL 会像这样按字母顺序对值进行排序。

 1
10
259
46
5
6
7894
9

解决此问题的最佳方法是将该列的数据类型更改为 INT。 (同时修复 right_answers 列。)

ALTER TABLE table_name CHANGE COLUMN time_spent time_spent INT NOT NULL DEFAULT '0'
ALTER TABLE table_name CHANGE COLUMN right_answers right_answers INT NOT NULL DEFAULT '0'

然后您的 ORDER BY 操作将以数字方式工作并为您提供预期的结果。

您的第二个最佳修复方法是在您的 ORDER BY 子句中将数据强制转换为数字,如下所示:

 ORDER BY 0+right_answers DESC, 0+time_spent ASC

关于php - MySQL ORDER BY 多列 ASC 和 DESC 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011424/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com