簡體   English   中英

如何在MySQL中獲得“ x最高值”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM