【发布时间】:2016-09-14 17:49:34
【问题描述】:
鉴于这三个表:
学生(sID, sName); 课程(cID, cName);和研究(sID,cID)。
Studies 包含三个具有相同 sID 和不同 cID 的元组,即一个学生学习三门不同的课程。
我正在尝试执行以下查询:
select s.sID, s.sName
from Student s
where 'sID1' in
(select st.sID
from Studies st
where st.sID = s.sID);
据我所知,在运行查询时,应该打印所有三个元组。但是只打印一个元组。到目前为止,我得出的结论是,这是因为内部查询中的 where 子句 where st.sID = s.sID,但我无法理解其背后的逻辑。是因为子句依赖于外部查询吗?为什么只打印一个元组而不是全部三个?
【问题讨论】:
-
请粘贴表格和所需的输出
-
学习
joint语法并尽可能远离in。 -
@ajeh 你为什么建议避免使用 IN?当然,这似乎不是解决问题的方式,但这是一个奇怪的笼统声明。
-
有时
in优化为union。join从来没有。 -
@ajeh 这并没有解释你关于避免 IN 的声明。提供细节太模糊了。你有没有解释你想说什么的参考资料?
标签: sql sql-server