Oracle10g ORA-00979:不是按表达式分组oracle如何按表达式分组?

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

我有一个使用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 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函数?好啊