[英]How to get the “x highest value” in mysql
我仍然是Java和stackoverflow的初學者。
我用Java為stats系統使用mysql編碼了一個我的世界的Minecraft服務器插件(Kills Deaths 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
您可以使用以下語句來做到這一點:
select playername from FFA order by points desc limit 10;
那將返回前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;
您可以在SQL中嘗試以下操作:
select playername from FFA where points=(select max(points) from FFA);
此查詢可以返回多個行...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.