2017-08-09 11 views
1

データベースクエリは以下のようなものがありますが、これはmySqlで実行するとうまくいきますが、 "集計またはGROUP BY列にない式でエラーが発生しています。私のJUnitはメモリHSQL DBを使います。私はStrange behavior of HSQLDB and group byを見てきましたが、集計メソッドがクエリで使用されている場合、すべてのフィールドに対してgroup byを与える必要があることを理解しています。JUNITでDBクエリでグループを実行しています

しかし、私は、1つの列(プライマリキーではない)でグループ化することに基づいてすべての価値を得る必要があるという要件があります。どうすればJUnitでこれを達成できるのかを教えてください。私が実行してい

問合せ: Select *, count(sampleField) from TestTable where sampleField2 != null group by sampleField

+0

という名前の列を使用すると、DBに接続しているか...気をつけて! JNDI経由の資格情報はJUnitからアクセスできないため、テストには独自のハードコードされた資格情報が必要です。 *経験から話す* –

+0

グループでは、グループ化された列と集約を選択リスト内でのみ使用できます。 1つのカラムだけのテーブルを除いて、MySQLでどのように動作するのか分かりません。 – aschoerk

+0

それは奇妙なことではありません。単純に無効なSQLです。いくつかの擬似SQLを使用して質問を推測しようとしたようです。 MySQLで動作する完全なクエリと、HQLで実行しようとしている完全なクエリを投稿してください。 – slambeth

答えて

1

あなたは他の列のための分(COLUMN_NAME)または最大値(COLUMN_NAME)を使用することができます。例えば

、あなたが持っている場合firstnamelastname

Select min(firstname), min(lastname), count(sampleField) from TestTable where sampleField2 != null group by sampleField 
関連する問題