问题描述
我在连接两个表时遇到了一些麻烦:
组:group_id,group_name
学生:student_id,group_id,first_name,last_name
我想计算每个小组有多少学生,然后输出小组名称,但是当我这样写时:
public String findGroupsByStudentsNumber(int expectedStudentsNumber) {
return " SELECT group_id,COUNT(student_id) AS Number_of_students " +
"FROM students " +
"LEFT JOIN groups ON group_id = groups.group_id " +
"GROUP BY group_id " +
"HAVING Number_of_students <=" + expectedStudentsNumber +
" ORDER BY group_id";
}
存在错误“列引用“ group_id”不明确”。
解决方法
由于两个表都有一个group_id
列,因此如果不指定要引用的表,就不能在查询中使用普通的group_id
。这是它看起来的一种方式:
SELECT students.group_id,COUNT(student_id) AS Number_of_students
FROM students
LEFT JOIN groups ON students.group_id = groups.group_id
GROUP BY students.group_id
HAVING Number_of_students <= X
ORDER BY students.group_id