这是我的代码,它完成了它的工作,但主要是它不像我告诉它使用SQL statemnt进行分组。另外,我想知道如何制作一个自定义列,使顶部为“1”并从那里开始编号。
btnLeaderBoardUpdate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String sql3 ="Select Name, Kills from honscores group by Name, Kills order by Kills DESC";
ResultSet rs;
try {
st = conn.prepareStatement(sql3);
rs = st.executeQuery();
table_2.setModel(DbUtils.resultSetToTableModel(rs));
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
});
这是输出:(我想在当前两个名称之前添加一个列,并从1开始编号)
Name Kills
Raknath 20
AceFire6 15
AceFire6 12
AceFire6 10
Raknath 9
Q22 7
Q22 5
答案 0 :(得分:2)
关于第一期,请参阅下文。
简短回答
请改用此语句:
Select Name, sum(Kills) from honscores group by Name order by Kills DESC
答案很长
您不希望按名称分组,而只是按名称分组,并希望汇总结果。
假设您有这些数据:
AceFire6 2
AceFire6 2
AceFire6 1
AceFire6 3
Raknath 1
Raknath 1
并使用您的语句,数据库将对AceFire6
值为kills
的{{1}}的所有值进行分组,2
的所有值都为{{1} }} AceFire6
等的值,然后选择杀戮量。
所以最后,你会得到这个结果:
kills
你想要的是总结杀戮,无论这个人有多少 - 我假设 - 游戏。
对于您的第二个问题(行数),请参阅另一个问题的this回答。
修改强>
好吧,这样的事情应该有用(没有保证,我没有测试声明):
1
快乐的FPS-ing ......:)
答案 1 :(得分:0)
试试这个:
// first query
SET @ranked = 0;
// second query
SELECT @ranked:=@ranked+1 ranked, name, kills FROM honscores
GROUP BY name, kills
ORDER BY ranked ASC;
正如@LeChe
所述,您可以在字段列表中使用SUM(kills)
来获取每个名称的总杀数。
SELECT @ranked:=@ranked+1 ranked,
name,
SUM(kills) kills FROM honscores, (SELECT @ranked:=0) t2
GROUP BY name
ORDER BY ranked ASC;