
postgresql中使用group by出现column "" must appear in the GROUP BY clause or be used in an aggregate function发表于 [2023-07-24 16:35:00],更新于 [2023-07-24 16:38:22]
总字数 [229], 阅读时长 [约1分钟], 阅读量 [
未知
]
publish by lensfrex
1 2 3 4 5 6 7 8 9 10 11 12
| select c.id, c."name" course_name, array_agg(ti.name) teachers, c.course_hours, c.spring_term, c.target_major, c.target_grade, cs.id schedule_id, cs.start_week, cs.end_week, cs.time, cs.academic_term, cs.place, cs.ratio from course c left join (teacher_course tc inner join teacher_info ti on tc.teacher = ti.id and tc.course = '1') on tc.course = c.id inner join course_schedule cs on c.id = cs.course where c.id = '1' group by ( c.id, c."name", c.course_hours, c.spring_term, c.target_major, c.target_grade, cs.id, cs.start_week, cs.end_week, cs.time, cs.academic_term, cs.place, cs.ratio )
|
cs: 课程安排
c:课程
tc:教师-课程关系
因为有多个老师教同一门课,所以打算将teacher.name合成一个数组返回
按照平常的写法,只需要group by cs.id
即可,但如果在postgresql中,则会出现column "" must appear in the GROUP BY clause or be used in an aggregate function
的错误
和mysql不同,postgresql中需要将前面select的字段都全部写进去(除了聚合后的字段,如这里的array_arr(ti.name) teachers
)