Mysql 在Java中执行多个计数查询

Mysql 在Java中执行多个计数查询,mysql,arrays,string,Mysql,Arrays,String,我有一个MySQL数据库(5.2版CE),我有一个表,我想根据用户给定的WHERE条件(来自数组列表)将其过滤到另一个表中。我想为用户选择的拆分对这个新表执行计数查询。例如,从TableName中计算(*),其中[userConditions,如性别=男性和性别=女性,等等]。用户可以提供多个WHERE条件,但计数查询一次只接受一个条件。因此,我将我的方法(执行此查询)设置为一个数组,根据用户选择的条件数返回多个查询,然后在for循环中执行每个查询。然而,这似乎在两个方面给了我编译错误:i)在s

我有一个MySQL数据库(5.2版CE),我有一个表,我想根据用户给定的WHERE条件(来自数组列表)将其过滤到另一个表中。我想为用户选择的拆分对这个新表执行计数查询。例如,从TableName中计算(*),其中[userConditions,如性别=男性和性别=女性,等等]。用户可以提供多个WHERE条件,但计数查询一次只接受一个条件。因此,我将我的方法(执行此查询)设置为一个数组,根据用户选择的条件数返回多个查询,然后在for循环中执行每个查询。然而,这似乎在两个方面给了我编译错误:i)在string[]方法中返回内置字符串的方式和ii)执行COUNT查询的方式。这些问题的代码:

private String countQuery;

public SetupSubsamplePopulation(UserSelectedSplit split) {

    this.split = split;
    // connect to the database
    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();

        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql?zeroDateTimeBehavior=convertToNull","root", "sharadha_1992");

        String buildSelectQuery = buildSelectQueryForCode();
        String getRowsFromTable = getNumberOfRows();
        stmt = connection.createStatement();
        rows = stmt.executeUpdate(buildSelectQuery);
        ResultSet rs = stmt.executeQuery(getRowsFromTable);

        for (int i=0; i<getCountOfWhereCondition().length; i++){
            //where I get the executeQuery error
            ResultSet rs1= stmt.execute(getCountOfWhereCondition());
            while (rs1.next()){
                rowsCount= rs.getRow();
                rows_count++;
            }
        }
        while (rs.next()) {
            rows = rs.getRow();
            rows_inserted++;
        }

        System.out.println(rows_inserted);
        System.out.println(rows_count);

    } catch (Exception e) {
        e.printStackTrace();
    }

}
私有字符串查询;
公共设置子样本群(用户选择分割){
this.split=split;
//连接到数据库
试一试{
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
connection=DriverManager.getConnection(“jdbc:mysql://localhost:3306/mysql?zeroDateTimeBehavior=convertToNull“根”,“sharadha_1992”);
字符串buildSelectQuery=buildSelectQueryForCode();
字符串getRowsFromTable=getNumberOfRows();
stmt=connection.createStatement();
rows=stmt.executeUpdate(buildSelectQuery);
结果集rs=stmt.executeQuery(getRowsFromTable);

对于(int i=0;i我认为您需要条件聚合,而不是
,其中

select count(*)
from  mygrist_samples.subsample_population
WHERE XXX
同:

select sum(case when XXX then 1 else 0 end) as cnt1
from mygrist_samples.subsample_population
现在,您可以在一次通话中添加多个条件:

select sum(case when XXX then 1 else 0 end) as cnt1,
       sum(case when yyy then 1 else 0 end) as cnt1
from  mygrist_samples.subsample_population

你能在代码中给我看一个实例吗?我的意思是,我怎么能从arrayList(即split.getSplitConditions()中获取sum参数?
select sum(case when XXX then 1 else 0 end) as cnt1,
       sum(case when yyy then 1 else 0 end) as cnt1
from  mygrist_samples.subsample_population