我做了一个查询,应该输出 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'。 如何修复我的查询,使其根据规定的要求输出正确的数据。
提前致谢。
最佳答案
在子查询中,您选择的是 students.stud_id 而不是结果,即您从事件 ID 1 选择的表。当您加入时,最好使用 on 子句而不是在 where 中添加检查条款。一般来说,我会按如下方式修改查询。
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';
您还可以将子查询中的结果表更改为学生表以获得正确的映射,但我不建议这样做。
关于MySQL-从不同的表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36103234/