Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改此代码以正确创建数据组?_Java_Mysql_Jdbc_Jtable - Fatal编程技术网

Java 如何更改此代码以正确创建数据组?

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

这是我的代码,它完成了它的工作,但它并不像我告诉它的那样使用SQL语句进行分组。我还想知道如何制作一个自定义列,对其本身进行编号,使顶部为“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);
            }

        }
    });
以下是输出:(我想在当前两个名为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;