将MySQL查询转换为Postgres
我有一个MySQL查询,它非常适合我需要它做的事情。然而,我需要将此转换到postgres安装中,似乎遇到了一些问题。查询如下:将MySQL查询转换为Postgres,sql,postgresql,postgresql-9.1,Sql,Postgresql,Postgresql 9.1,我有一个MySQL查询,它非常适合我需要它做的事情。然而,我需要将此转换到postgres安装中,似乎遇到了一些问题。查询如下: SELECT r.studno, r.sdate,r.subject, sum(exam1) as exam1,sum(exam2) as exam2,sum(asgn1) as asgn1,sum(asgn2) as asgn2, sum(proj1) as proj1,sum(proj2) as proj2,sum(pract1) as pract1, s
SELECT r.studno, r.sdate,r.subject,
sum(exam1) as exam1,sum(exam2) as exam2,sum(asgn1) as asgn1,sum(asgn2) as asgn2,
sum(proj1) as proj1,sum(proj2) as proj2,sum(pract1) as pract1, sum(pract2) as pract2,
r.overallmark, r.result, r.credits, r.corlevel, r.nceaaward, r.gpa, r.overallresult
FROM exam_results r WHERE r.studno = :studno AND r.sdate = :sdate GROUP BY r.studno, r.subject
我已尝试在postgres中运行此功能,但出现以下错误:
2014-06-23 11:56:54 IST错误:列“r.sdate”必须出现在GROUP BY子句中,或在字符8处的聚合函数中使用
如何解决此问题?您的查询正在使用MySQL扩展,该扩展允许select
中的列不在组中。您可以通过在聚合函数(如max()
)中包装所有此类列来修复查询:
读一下:;)
SELECT r.studno, r.sdate, r.subject,
sum(exam1) as exam1,sum(exam2) as exam2,sum(asgn1) as asgn1,sum(asgn2) as asgn2,
sum(proj1) as proj1,sum(proj2) as proj2,sum(pract1) as pract1, sum(pract2) as pract2,
max(r.overallmark), max(r.result), max(r.credits),
max(r.corlevel), max(r.nceaaward), max(r.gpa), max(r.overallresult)
FROM exam_results r
WHERE r.studno = :studno AND r.sdate = :sdate
GROUP BY r.studno, r.sdate, r.subject;