【问题标题】:Grails group query works with Mysql but fails with SQLServerGrails 组查询适用于 Mysql,但适用于 SQLServer
【发布时间】:2020-08-21 03:17:21
【问题描述】:

我正在使用 Grails,我的这个查询在我使用 MySql 时运行良好,但在我使用 SQL Server 时却失败了

def list = Ticket.executeQuery("select t.expertice from Ticket t where t.currentStatus = 1 and t.team = 11 group by t.expertice")
The errot I get:
ERROR GrailsExceptionResolver - Column 'expertice.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
com.microsoft.sqlserver.jdbc.SQLServerException: Column 'expertice.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
        at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
        at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
        at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:285)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
        at com.bayer.bbs.emea.web.wbt.TestController$_closure4_closure13.doCall(TestController.groovy:65)
        at com.bayer.bbs.emea.web.wbt.TestController$_closure4.doCall(TestController.groovy:29)
        at com.bayer.bbs.emea.web.wbt.TestController$_closure4.doCall(TestController.groovy)
        at java.lang.Thread.run(Thread.java:662)

【问题讨论】:

  • 正如错误所说,Sql server 不允许 group by 没有聚合函数。你想做什么?
  • 该错误与您发布的查询无关。
  • 请调查您可用的格式选项 - 这个问题不可读。

标签: mysql sql-server grails hql


【解决方案1】:

终于成功了……领域专家是一个 Grais 实体。

select t.expertice.id 
from Ticket t 
where t.currentStatus = 1 
      and t.team = 11 
group by t.expertice.id

我包含了.id,它在 MySql 和 SQLServer 中都可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-23
    • 2021-02-23
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多