MySQL-从不同的表中选择数据

时间:2016-03-19 14:56:38

标签: mysql

我做了一个查询,应该输出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'。 如何修复查询,以便根据所述要求输出正确的数据。

提前致谢。

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';

您也可以将子查询中的结果表更改为学生表以获得正确的映射,但我会建议不要这样做。