我做了一个查询,应该输出stud_fname,stud_sname,result_studpoints,result_position和studevent_result以满足特定要求,其中stud_gender ='M',stud_yrGroup ='9'和event_id ='1'。
这是查询:
SELECT stud_fname, stud_sname, result_studpoints, result_position, studevent_result FROM students
INNER JOIN result
WHERE stud_gender = 'M'
AND stud_yrgroup = '9'
AND result.stud_id IN (SELECT students.stud_id FROM result WHERE event_id = '1');
但它没有显示正确的输出。
不应输出Sam Cro行,因为他没有执行event_id ='1'。 如何修复查询,以便根据所述要求输出正确的数据。
提前致谢。
答案 0 :(得分:1)
在子查询中,您选择的是students.stud_id,而不是结果,即您为事件ID 1选择的表。当您加入时,最好使用on子句而不是在哪里添加检查条款。一般情况下,我会按如下方式修改查询。
SELECT stud_fname,
stud_sname,
result_studpoints,
result_position,
studevent_result
FROM
students s
INNER JOIN
result r on
s.stud_is = r.stud_id
WHERE
stud_gender = 'M'
AND stud_yrgroup = '9'
AND r.event_id = '1';
您也可以将子查询中的结果表更改为学生表以获得正确的映射,但我会建议不要这样做。