2016-03-19 127 views
1

我做了一个查询,应该为stud_gender ='M',stud_yrGroup ='9'和event_id ='1'的特定需求输出stud_fname,stud_sname,result_studpoints,result_position和studevent_result。MySQL-从不同表中选择数据

这是查询:

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

在你的子查询中,选择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'; 

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

+0

谢谢,查询工作! :) – SubZero