【发布时间】:2019-04-08 09:07:26
【问题描述】:
我想用 SQL 制作排行榜。
因此,在我的情况下,我必须使用kills ORDER BY 才能对结果进行排序。
但是对于结果集,顺序是错误的。
HashMap<String, Integer> player_list = new HashMap<>();
preparedStatement = this.pvpBox.getDtb().getConnection().prepareStatement(
"SELECT player_name, kills FROM players ORDER BY kills DESC LIMIT 10");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
player_list.put(resultSet.getString("player_name"), resultSet.getInt("kills"));
}
没有错误信息。
我已经在 PHPMyAdmin 的“SQL”部分尝试过,我得到了预期的结果..
表格示例:
player_name 杀死 玩家1 40 玩家2 20 玩家3 50 播放器4 10 玩家 5 30实际结果:
player_name 杀死 玩家 5 30 玩家1 40 播放器4 10 玩家2 20 玩家3 50预期结果:
player_name 杀死 玩家3 50 玩家1 40 玩家 5 30 玩家2 20 播放器4 10我正在使用 Java 8 和 Apache 2。
解决方法:使用 LinkedHashMap 代替 HashMap(hashmap 没有任何顺序)。
【问题讨论】:
-
您使用的是什么
List实现?它可能无法跟踪广告订单。 -
try SELECT player_name, kills FROM player ORDER BY 无限制地杀死 DESC。不确定它是否会有所帮助,但我想值得一试
-
@Alan 限制不应该干扰这个。
-
您是否尝试在 while 循环中打印出结果以查看它们是否正确?正如@Andronicus 指出的那样,这可能是由不正确的
List实现引起的 -
@lealceldeiro 我知道。但谁知道它可能是那些奇怪的事情之一