卡在 Oracle SQL 查询中

Posted

技术标签:

【中文标题】卡在 Oracle SQL 查询中【英文标题】:Stuck with an Oracle SQL query 【发布时间】:2016-04-13 15:54:35 【问题描述】:

我有这样一个场景:有一个表course_details如下:

现在我要查找的学生的详细信息 - 在本例中为 Stu_id - 已在 2016 年注册课程。

例如 - 2016 年有 C1、C3 和 C4 课程。在这些课程中,只有 S1 参加了所有课程。 S2和S3只录取了一些。

所以我的查询应该只给出 S1 的结果。

我尝试使用子查询分解、窗口函数,但如果不对某些值进行硬编码,就无法获得它。

【问题讨论】:

其他表格中是否有课程 ID 列表?我们怎么知道没有C5C6 您能否更具体地说明您要查找的详细信息? 另外,请向我们展示您尝试过的代码以及为什么它的结果与您想要的不符。 令人困惑的是,您的问题陈述中写着“2016 年已注册课程的学生”,然后您的示例中提到了问题陈述中没有的“全部注册”。尝试清除它。 @FirstName,所以您的意思是,您想找到一个修完 2016 年提供的所有课程的学生,无论该学生是哪一年注册的课程? 【参考方案1】:

以下内容如何:

SELECT DISTINCT a.stu_id
FROM course_details AS a
WHERE
    NOT EXISTS (
        SELECT NULL FROM course_details AS b
        WHERE
            b.enrol_dt = 2016
            AND
            NOT EXISTS (
                SELECT * FROM course_details AS c
                WHERE c.c_id = b.c_id AND c.stu_id = a.stu_id
            )
    );

【讨论】:

以上是关于卡在 Oracle SQL 查询中的主要内容,如果未能解决你的问题,请参考以下文章

Oracle/SQL - 基于参数的动态列

Oracle:尝试使用唯一键组合的“更新”语句。卡在 where 子句中

oracle 死锁和锁等待的区别,锁等待

oracle 中sql执行超慢几乎查询不出来

oracle sql developer 能否直接修改sql查询出的数据?

oracle里怎么对sql查询的日志进行查看