卡在 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 列表?我们怎么知道没有C5
或C6
?
您能否更具体地说明您要查找的详细信息?
另外,请向我们展示您尝试过的代码以及为什么它的结果与您想要的不符。
令人困惑的是,您的问题陈述中写着“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:尝试使用唯一键组合的“更新”语句。卡在 where 子句中