Java 如何更改此代码以正确创建数据组?
这是我的代码,它完成了它的工作,但它并不像我告诉它的那样使用SQL语句进行分组。我还想知道如何制作一个自定义列,对其本身进行编号,使顶部为“1”,然后从那里开始编号Java 如何更改此代码以正确创建数据组?,java,mysql,jdbc,jtable,Java,Mysql,Jdbc,Jtable,这是我的代码,它完成了它的工作,但它并不像我告诉它的那样使用SQL语句进行分组。我还想知道如何制作一个自定义列,对其本身进行编号,使顶部为“1”,然后从那里开始编号 btnLeaderBoardUpdate.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String sql3 ="Select Name, Kills from
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);
}
}
});
以下是输出:(我想在当前两个名为rank的列之前添加一列,并将其编号从1开始)
关于第一期,请参见下文 简短回答
请使用以下语句:
Select Name, sum(Kills) from honscores group by Name order by Kills DESC
长答案您不希望按kill分组,而只希望按名称分组,并希望聚合结果 假设您有以下数据:
AceFire6 2
AceFire6 2
AceFire6 1
AceFire6 3
Raknath 1
Raknath 1
并使用您的语句,数据库将对AceFire6
的kills
值为2
的所有值、AceFire6
的kills
值为1
的所有值进行分组,然后选择杀死量
最后,你会得到这个结果:
AceFire6 3
AceFire6 2
AceFire6 1
Raknath 1
你要做的是把杀戮加起来,不管这个人在每场比赛中有多少
关于第二个问题(行数),请参见另一个问题的答案
编辑:好的,类似的东西应该可以工作(没有保证,我没有测试声明): 快乐的FPS ing…:) 试试这个:
// first query
SET @ranked = 0;
// second query
SELECT @ranked:=@ranked+1 ranked, name, kills FROM honscores
GROUP BY name, kills
ORDER BY ranked ASC;
如上所述,您可以在字段列表中使用SUM(kills)
来获取每个姓名的总kills
SELECT @ranked:=@ranked+1 ranked,
name,
SUM(kills) kills FROM honscores, (SELECT @ranked:=0) t2
GROUP BY name
ORDER BY ranked ASC;
我认为在他的代码中,在实际的
选择之前,他将在集合中遇到问题-我猜他需要一个语句。:)谢谢,我会试试这个:)这正是我想要的:D非常感谢!没问题,很高兴我能帮忙……:)
// first query
SET @ranked = 0;
// second query
SELECT @ranked:=@ranked+1 ranked, name, kills FROM honscores
GROUP BY name, kills
ORDER BY ranked ASC;
SELECT @ranked:=@ranked+1 ranked,
name,
SUM(kills) kills FROM honscores, (SELECT @ranked:=0) t2
GROUP BY name
ORDER BY ranked ASC;