mySQL子查询IN用法的一点理解

    技术2022-07-10  146

    如上有subject课程表和result成绩表,要求用查询IN方法查询具体内容

    题1:查询《数据库结构-1》的所有考试结果,并按成绩由高到低排列

    SELECT studentNo, studentResult FROM result WHEREsubjectNoIN (SELECT subjectNo FROMsubjectWHERE subjectName='数据库结构-1') ORDER BY studentResult DESC;

    本题中,虽然有用到两张表subject表和result表,但是查询结果studentNo、studentResult 都只要从result表中获取,所以不用加上subject.subjectNo=result.subjectNo.

    题2:查询《数据库结构-1》的所有考试结果及对应的学生学号,并按成绩由高到低排列

    SELECT studentNo,studentResult,ClassHour FROM result res ,subjectsub where sub.SubjectNo=res.SubjectNoand sub.subjectNo IN (SELECT subjectNo FROMsubjectWHERE subjectName='数据库结构-1') ORDER BY studentResult DESC;

    该题与上题不同的是,除了查询result表中的studentNo、studentResult ,还需要查询subject表中的ClassHour ,这时就必须加上sub.SubjectNo=res.SubjectNo,否则结果就不能一一对应。

    由此得出: mySQL中子查询IN语句可以提供查询但不能让两张表互联(即让两张表中值一一对应)。

    Processed: 0.012, SQL: 9