Oracle10g ORA-00979:不是按表达式分组oracle如何按表达式分组?
我有一个使用Hibernate的应用程序。它生成了以下SQL语句。我正试图修改查询以对数据进行分组,但我一直收到一个错误Oracle10g ORA-00979:不是按表达式分组oracle如何按表达式分组?,oracle10g,group-by,Oracle10g,Group By,我有一个使用Hibernate的应用程序。它生成了以下SQL语句。我正试图修改查询以对数据进行分组,但我一直收到一个错误 ORA-00979: not a GROUP BY expression 询问 > select > snstoken0_.id as id20_0_, > snstokenme1_.SNS_MESSAGE_ID as SNS2_21_1_, > snstokenme1_.SNS_TOKEN_ID a
ORA-00979: not a GROUP BY expression
询问
> select
> snstoken0_.id as id20_0_,
> snstokenme1_.SNS_MESSAGE_ID as SNS2_21_1_,
> snstokenme1_.SNS_TOKEN_ID as SNS3_21_1_,
> snsmessage2_.id as id19_2_,
> snsmaster3_.id as id17_3_,
> snstokenpr4_.id as id22_4_,
> snstoken0_.ACTIVE_STATE as ACTIVE2_20_0_,
> snstoken0_.MEMBER_ID as MEMBER8_20_0_,
> snstoken0_.SNS_MASTER_ID as SNS9_20_0_,
> snstoken0_.TOKEN1 as TOKEN3_20_0_,
> snstoken0_.TOKEN2 as TOKEN4_20_0_,
> snstoken0_.TOKEN3 as TOKEN5_20_0_,
> snstoken0_.DATE_TOKEN as DATE6_20_0_,
> snstoken0_.USERNAME as USERNAME20_0_,
> snstokenme1_.ARTICLE_ID as ARTICLE1_21_1_,
> snstokenme1_.SNS_TOKEN_ID as SNS3_20_0__,
> snstokenme1_.SNS_MESSAGE_ID as SNS2_0__,
> snstokenme1_.SNS_TOKEN_ID as SNS3_0__,
> snsmessage2_.ACTIVE_STATE as ACTIVE2_19_2_,
> snsmessage2_.CONTENT_ID as CONTENT5_19_2_,
> snsmessage2_.MESSAGE_TEXT as MESSAGE3_19_2_,
> snsmessage2_.SNS_MESSAGE_ID as SNS6_19_2_,
> snsmessage2_.POST_DATE as POST4_19_2_,
> snsmaster3_.ACTIVE_STATE as ACTIVE2_17_3_,
> snsmaster3_.ACTIVE_ICON as ACTIVE3_17_3_,
> snsmaster3_.AUTHENTICATION_URL as AUTHENTI4_17_3_,
> snsmaster3_.BREAK_TOKEN_URL as BREAK5_17_3_,
> snsmaster3_.INACTIVE_ICON as INACTIVE6_17_3_,
> snsmaster3_.NAME as NAME17_3_,
> snsmaster3_.URL_WEBSITE as URL8_17_3_,
> snstokenpr4_.ACTIVE_STATE as ACTIVE2_22_4_,
> snstokenpr4_.SNS_TOKEN_ID as SNS5_22_4_,
> snstokenpr4_.VALUE as VALUE22_4_,
> snstokenpr4_.VAR as VAR22_4_,
> snstokenpr4_.SNS_TOKEN_ID as SNS5_20_1__,
> snstokenpr4_.id as id1__
> from
> SNS_TOKEN snstoken0_
> left outer join
> SNS_TOKEN_MESSAGE snstokenme1_
> on snstoken0_.id=snstokenme1_.SNS_TOKEN_ID
> left outer join
> SNS_MESSAGE snsmessage2_
> on snstokenme1_.SNS_MESSAGE_ID=snsmessage2_.id
> left outer join
> SNS_MASTER snsmaster3_
> on snstoken0_.SNS_MASTER_ID=snsmaster3_.id
> left outer join
> SNS_TOKEN_PROP snstokenpr4_
> on snstoken0_.id=snstokenpr4_.SNS_TOKEN_ID
> group by
> snstoken0_.MEMBER_ID
> having
> snstokenpr4_.VAR='PROFILE_IMAGE'
如果在查询中提供GROUPBY子句,则它必须在SELECT列表中包含所有非聚合表达式(除了文字和某些确定性函数的少数例外) 在本例中,需要在GROUPBY之后重复整个表达式列表(在SELECT之后)
(如果这是由Hibernate生成的,则Hibernate生成的SQL对Oracle无效。)我在查询中没有看到任何聚合函数。也许您不想按成员id分组,而是按此列排序结果。此查询是由Hibernate生成的还是您自己编写的?如果是Hibernate,那么生成此查询的HQL是什么?如果是你自己写的,就像@Marcin Wroblewski所说的,它不是SQL的一个组,而是hibernate写的。不是按SQL分组的??所以它必须有agregate函数?好啊