将COUNT与DISTINCT一起使用时出现MySQLSyntaxErrorException

时间:2016-08-18 21:32:05

标签: java mysql jdbc

我在下面的sql语句中出错了。我访问过的网站提倡这是将这两个关键字一起使用的正确方法。我试图通过测试得到结果中的独特特征数。名称是测试的PK。

public int getTestCount(Database db, String name) throws SQLException {

    int count = 0;
    String sql = "SELECT COUNT (DISTINCT Trait) As Count FROM RESULTS WHERE name = ?";

    PreparedStatement ps = db.con.prepareStatement(sql);
    ps.setString(1, name);

    ResultSet rs = ps.executeQuery();

    if (rs.next()) {
        count = rs.getInt("Count");
    }
    return count;
}

错误:

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个   SQL语法错误;查看与您的手册相对应的手册   MariaDB服务器版本,使用正确的语法       'DISTINCT Trait附近)作为结果从第1行开始名字='test3''

2 个答案:

答案 0 :(得分:0)

删除单词COUNT

后面的空格
SELECT COUNT(DISTINCT Trait) As Count FROM RESULTS WHERE name = ?

以下是一个实例:SQL Fiddle

答案 1 :(得分:0)

public int getTestCount(Database db, String name) throws SQLException {
    int count = 0;
    String sql = "SELECT COUNT(DISTINCT Trait) As T_Count FROM RESULTS WHERE name = ?";

    PreparedStatement ps = db.con.prepareStatement(sql);
    ps.setString(1, name);

    ResultSet rs = ps.executeQuery();

    if (rs.next()) {
        count = rs.getInt("T_Count");
    }
    return count;
}

保留计数。因此,您可以定义任何有效变量,并在使用rs.getInt(<< here >>);调用时使用它 一个很好的链接供您参考:MySql Syntax