考虑我试图在此处表示一个简单的查询:
SELECT student.name, MAX(grades.final_grade) as max_grade
From grades , students
where student.id == grade.student_id and max_grade == 90
我的问题是关于语法以及如何表示相同的原始SQL查询的问题。
在sqlalchemy orm中,它可能如下所示:
Student
和Grade
将表格表示为orm对象。
query= session.query(Student.name , func.max(Grade.final_grade).join(Grade, Student.id == Grade.student_id).filter(text("max_grade = 90")).all()
但是在这种情况下,我得到了优先权:
{Operationalerror}{_mysql_exceptions.Operationalerror)(1054, "Unknown column 'max_grade' in where clause"
任何想法如何解决这个问题,为什么我的标签不被识别?
Text
构建用法手册参考为here
编辑:关于原始sql的问题,因为我们觉得有些事情不对。
我原来的sql查询是:
SELECT student.name, MAX(grades.grade) as grade
From grades , students
where student.id = grade.student_id and grade = 90
在where
条款grade=90
中,grade
表示grades
,表示grades.grade =90
,而不是MAX(grades.grade)=90
?<登记/>
所以查询有效,因为成绩是指列表而不是select子句中的标签?
谢谢