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

标签 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'。 如何修复我的查询,使其根据规定的要求输出正确的数据。

提前致谢。

最佳答案

在子查询中,您选择的是 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/

相关文章:

mysql - 将 "\r"插入 mysql 数据库而不转义到 "\\r"- codeigniter

java - 需要修改 java 时间戳以从数据库中获取最新记录

mysql - 无法删除 MySQL 表

php - 查询操作数据库

php - 从数据库中选择数据,然后再次插入数据库 codeigniter

java - 是否可以将具有泛型的集合对象直接存储到数据库列中

javascript - mysql 和 XMLHttpRequest + PHP 的问题

mysql - PostgreSQL:SET 相当于 MySQL

php - 如何重定向到登录页面然后重定向回php中的上一页

php - 允许表中重复