在这里,我使用了from
子句中的连接部分......
select course_id, semester, year, sec_id, avg (tot_cred)
from takes natural join student
where year = 2009
group by course_id, semester, year, sec_id
having count (ID) >= 2
现在,我的问题是,这个SQL查询是否正确?如果是,那为什么呢?或者如果不是那么为什么?感谢。
答案 0 :(得分:2)
您的查询技术上正确。但是,我强烈建议你永远不要使用natural join
。这是一个等待发生的错误。为什么?它使用基础表中列的名称 - 而且只使用名称。它甚至不使用声明的外键关系。
相反,请使用明确的on
或using
子句:
select courseid, semester, year, secid, avg(totcred)
from takes t join
student s
using (studentid)
where year = 2009
group by courseid, semester, year, secid
having count(*) >= 2;
此外: