如何在 mysql 中获取 "x highest value"
How to get the "x highest value" in mysql
我还是 Java 和 Whosebug 的初学者。
我在 java 中为我的世界服务器编写了一个插件,使用 mysql 作为统计系统(杀死死亡点数)
我想知道如何获得 "Points" 最高的玩家,所以我想获得 "Playername" 其中 "Points" 最高。
我也想获得第二高,第三高等
我使用了准备好的语句,例如:
public static int getPoints(String Playername) {
int Points = 0;
try {
PreparedStatement st = con
.prepareStatement("SELECT Points FROM FFA WHERE UUID = '"
+ PlayerUtil.getUUID(Playername) + "'");
ResultSet rs = st.executeQuery();
if (rs.next()) {
Points = rs.getInt("Points");
} else {
Points = 0;
}
} catch (SQLException e) {
e.printStackTrace();
}
return Points;
}
如果你能帮助我,那就太好了!
感谢您的宝贵时间!
PS:
我的 SQL 结构:
Playername varchar(64)
UUID varchar(64)
Kills int
Deaths int
Points int
您可以在 SQL 中尝试这样的操作:
select playername from FFA where points=(select max(points) from FFA);
这个查询可以return多行...
您可以使用以下语句来执行此操作:
select playername from FFA order by points desc limit 10;
这将是 return 前 10 名玩家
或者你可以做类似的事情
select playername from FFA where points >= 1337 order by points DESC;
然后您可以循环遍历调用 rs.next()
的每个条目。使用 rs.next()
首次获取将使您获得更多积分,因为您使用了 order by
.
所以代码看起来像这样:
public static String getTopPlayer() {
int limit = 10;
try {
preparedstatement st = con
.preparestatement("select * from FF order by points desc limit "
+ limit);
resultset rs = st.executequery();
if (rs.next()) {
name = rs.getString("playername");
//if rs.next() rs.getString("playername"); <-- returns second
//if rs.next(); rs.getString("playername"); <-- returns third
} else {
name = null;
}
} catch (sqlexception e) {
e.printstacktrace();
}
return name;
我还是 Java 和 Whosebug 的初学者。
我在 java 中为我的世界服务器编写了一个插件,使用 mysql 作为统计系统(杀死死亡点数)
我想知道如何获得 "Points" 最高的玩家,所以我想获得 "Playername" 其中 "Points" 最高。 我也想获得第二高,第三高等
我使用了准备好的语句,例如:
public static int getPoints(String Playername) {
int Points = 0;
try {
PreparedStatement st = con
.prepareStatement("SELECT Points FROM FFA WHERE UUID = '"
+ PlayerUtil.getUUID(Playername) + "'");
ResultSet rs = st.executeQuery();
if (rs.next()) {
Points = rs.getInt("Points");
} else {
Points = 0;
}
} catch (SQLException e) {
e.printStackTrace();
}
return Points;
}
如果你能帮助我,那就太好了! 感谢您的宝贵时间!
PS: 我的 SQL 结构:
Playername varchar(64)
UUID varchar(64)
Kills int
Deaths int
Points int
您可以在 SQL 中尝试这样的操作:
select playername from FFA where points=(select max(points) from FFA);
这个查询可以return多行...
您可以使用以下语句来执行此操作:
select playername from FFA order by points desc limit 10;
这将是 return 前 10 名玩家
或者你可以做类似的事情
select playername from FFA where points >= 1337 order by points DESC;
然后您可以循环遍历调用 rs.next()
的每个条目。使用 rs.next()
首次获取将使您获得更多积分,因为您使用了 order by
.
所以代码看起来像这样:
public static String getTopPlayer() {
int limit = 10;
try {
preparedstatement st = con
.preparestatement("select * from FF order by points desc limit "
+ limit);
resultset rs = st.executequery();
if (rs.next()) {
name = rs.getString("playername");
//if rs.next() rs.getString("playername"); <-- returns second
//if rs.next(); rs.getString("playername"); <-- returns third
} else {
name = null;
}
} catch (sqlexception e) {
e.printstacktrace();
}
return name;