该语句没有明显的语法错误,但是可能存在以下问题:

  1. 子查询中应该选择某个学生的成绩,而不是所有学生的成绩。可以将子查询改为:

SELECT * FROM score WHERE name='李四'

  1. 在子查询中使用了 name 列,但是在主查询中并没有使用该列。如果想要选择某个学生的姓名,可以将主查询中的 c_name 改为 name。例如:

SELECT name, grade FROM score sc JOIN (SELECT * FROM score WHERE name='李四') stus ON stus.id=sc.stu_id;

  1. 如果存在多个名为李四的学生,子查询会返回多条记录,可能会导致主查询中的 JOIN 操作出现错误。可以在子查询中使用 LIMIT 限制只返回一条记录。例如:

SELECT c_name, grade FROM score sc JOIN (SELECT * FROM score WHERE name='李四' LIMIT 1) stus ON stus.id=sc.stu_id;


原文地址: https://www.cveoy.top/t/topic/g06B 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录