验证查询‘이홍근’选课数量的SQL语句是否正确
你的SQL语句问题分析
结论:这条语句存在语法和逻辑问题,无法直接正确执行。
具体问题及修正方案:
- 别名语法错误:
AS Number of courses中的别名包含空格,SQL会识别失败,需给别名添加双引号(AS "Number of courses")或改用下划线替换空格(AS Number_of_courses)。 - 表连接写法不规范:用逗号连接表是老式SQL语法,推荐使用可读性更强的显式
INNER JOIN语法,修正后基础可用版本:SELECT COUNT(*) AS "Number of courses" FROM STUDENT AS S INNER JOIN ENROL AS E ON S.SNO = E.SNO WHERE S.NAME = '이홍근'; - 逻辑覆盖不全:如果学生‘이홍근’未选任何课程,上述内连接会返回空结果而非0。若需在无选课场景下返回0,应使用
LEFT JOIN并统计选课表的非空字段:SELECT COUNT(E.SNO) AS "Number of courses" FROM STUDENT AS S LEFT JOIN ENROL AS E ON S.SNO = E.SNO WHERE S.NAME = '이홍근';
总结
修正别名和连接方式后,语句可正常运行;若要覆盖学生无选课的场景,建议采用LEFT JOIN版本。
内容的提问来源于stack exchange,提问作者조롱이
相关产品推荐
相关产品推荐

