2016-08-18 6 views
0

以下のSQL文でエラーが発生します。訪問したサイトは、これらの2つのキーワードを一緒に使用する正しい方法として、これを推奨しています。私はテストの結果でユニークな形質の数を取得しようとしています。名前はテストのPKです。DISTINCTでCOUNTを使用する場合のMySQLSyntaxErrorException

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: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DISTINCT Trait) As Count FROM RESULTS WHERE name = 'test3'' at line 1

+0

あなたが – Roberto

+0

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptionを取得し、エラーを指定してください:あなたは、エラーを持っていますあなたのSQL構文で。あなたのMariaDBサーバのバージョンに対応するマニュアルをチェックして、正しい構文がDISTINCT Traitの近くで使用できるようにしてください。Count From FROM Result 1行目のname = 'test3' ' – TraderJosh

+0

このエラーを質問の内容に追加してください。コメント。 – Julian

答えて

0

はここで言葉COUNT

SELECT COUNT(DISTINCT Trait) As Count FROM RESULTS WHERE name = ? 

の後にスペースを削除し、ライブの例です:SQL Fiddle

+0

ブリリアント!とてもシンプルなものに私が打ち負かされたとは信じられない。 – TraderJosh

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

関連する問題