【发布时间】:2021-11-27 21:12:42
【问题描述】:
我尝试在 SELECT collect 中放置一个子查询来创建一个新表。这是我写的:
select
f.FacNo, FacFirstName
from
Faculty f,
(select FacNo from Offering
where OffTerm = 'FALL' and CourseNo like 'IS%') T
where
f.FacNo in (select FacNo from T)
但是,子查询总是报错
无效的对象名称'T'
但是,如果我将子查询移动到 WHERE 子句,它会起作用:
select
FacNo, FacFirstName
from
Faculty
where
FacNo in (select FacNo from Offering
where OffTerm = 'FALL' and CourseNo like 'IS%')
另外,如果我在 where 子句中将 'IN' 更改为 '=',第一个错误查询也有效:
select
f.FacNo, FacFirstName
from
Faculty f,
(select FacNo from Offering
where OffTerm = 'FALL' and CourseNo like 'IS%') T
where
f.FacNo = T.FacNo
这是否意味着如果我们在SELECT 子句中创建子查询表,我们只能在以下查询中对子查询表使用'='?请帮忙。非常感谢!
【问题讨论】:
-
顺便说一句,1992 年以前的基于逗号的连接语法真的不需要;现代的 JOIN...ON 语法总是更清晰。
标签: sql