SQL子查询匹配C开头教授专业同专业学生返回0行原因求助
SQL查询返回0行问题排查
错误点说明
- 匹配运算符错误:使用
=匹配子查询返回结果,当教授表中存在多个符合条件的专业时,子查询会返回多条数据,=仅支持单值匹配,会导致匹配失败无结果,需替换为IN运算符。 - LIKE通配符使用错误:
LIKE 'C_'中的下划线_为单字符通配符,仅能匹配首字符为C、总长度为2的专业。要匹配所有首字符为C的专业,需使用多字符通配符%,修正为LIKE 'C%'。
修正后语句
SELECT s.firstname, s.lastname, s.studentprogram FROM student s WHERE s.studentprogram IN (SELECT DISTINCT p.ProfessorProgram FROM professor p WHERE p.ProfessorProgram LIKE 'C%');
补充说明:子查询中加入DISTINCT可以过滤重复的专业值,提升查询效率。
表结构中文翻译
- 学生表(student)字段:学号、学生专业、联系电话、年龄、名、姓
- 教授表(professor)字段:教授ID、教授专业、联系电话、年龄、教授姓名
内容的提问来源于stack exchange,提问作者Steve Wong
相关产品推荐
相关产品推荐

