mysql - 相关名称在内部查询中如何工作?

标签 mysql sql

我有一个查询“查找 2009 年秋季学期和 2010 年 Spring 学期教授的所有类(class)”

SELECT
    course_id
FROM
    section S
WHERE
    semester = 'Fall'
AND YEAR = 2009
AND EXISTS (
    SELECT
        *
    FROM
        section T
    WHERE
        semester = 'Spring'
    AND YEAR = 2010
    AND S.course_id = T.course_id
);

在内部查询的 where 子句的第二部分中,您可以看到 S.course_id=T.course_idS.course_id 是什么?这是外部查询生成的关系的 course_id 吗?

最佳答案

是的,S.course_id 是外部查询中的列。
S.course_id=T.course_id 仅选择内查询和外查询中类(class)id均等于的记录

<小时/>

为了查找 2009 年秋季学期和 2010 年 Spring 学期教授的所有类(class),您的查询应该类似于

SELECT course_id FROM  section 
WHERE 
semester = 'Fall' AND year = '2009'
UNION 
SELECT course_id FROM  section
WHERE 
semester = 'Spring' AND year = '2010'
;

引用 http://sqlfiddle.com/#!9/449be

关于mysql - 相关名称在内部查询中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37772033/

相关文章:

mysql - 如何在包含分组函数的 where 子句中引用别名列

mysql - mysql 中的并行查询执行

php - 如何将数组值推送到 json 字符串中

mysql - 过滤特定列上按给定步长增加的行

mysql - 一条 SQL 语句对应两个外键

mysql - 在使用别名的 having 子句中使用子查询

mysql - 如何在 Oracle 中设置固定时间分钟和秒与当前小时

php - 将多个 POST 数组插入 MySql

php - 使用 count 从两个表中选择总行数

MySQL INSERT 如果不存在(不使用主键)