You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SELECT语句子查询无法识别已定义表别名s_enrollment的原因

报错原因

你的判断完全准确,问题出在SQL的作用域规则:
FROM子句中定义的派生表别名s_enrollment,仅对当前外层查询的同级别子句(SELECT/WHERE/GROUP BY等)可见,无法被同级别WHERE里嵌套的独立子查询当作表来引用。你写的标量子查询select max(enrollment) from s_enrollment会独立查找名为s_enrollment的实体表,自然会报找不到表的错误。

修正写法

写法1:CTE(公共表表达式)

CTE定义的临时结果集支持在后续查询中多次引用,可读性最好,兼容绝大多数主流数据库:

WITH s_enrollment AS (
    select course_id, sec_id, count(id) as enrollment
    from takes natural join section
    where semester ='Fall' and year = 2009
    group by course_id, sec_id
)
select course_id, sec_id
from s_enrollment
where enrollment = (select max(enrollment) from s_enrollment);

写法2:窗口函数

不需要二次查询临时结果,执行效率更高,适合数据量较大的场景:

select course_id, sec_id
from (
    select 
        course_id, 
        sec_id, 
        count(id) as enrollment,
        max(count(id)) over () as max_enroll
    from takes natural join section
    where semester ='Fall' and year = 2009
    group by course_id, sec_id
) as s_enrollment
where enrollment = max_enroll;
关联表结构

takes表

CREATE TABLE takes
    (ID         varchar(5), 
     course_id      varchar(8),
     sec_id         varchar(8), 
     semester       varchar(6),
     year           numeric(4,0),
     grade              varchar(2),
     primary key (ID, course_id, sec_id, semester, year),
     foreign key (course_id,sec_id, semester, year) references section
        on delete cascade,
     foreign key (ID) references student
        on delete cascade
    )

section表

CREATE TABLE section
    (course_id      varchar(8), 
         sec_id         varchar(8),
     semester       varchar(6)
        check (semester in ('Fall', 'Winter', 'Spring', 'Summer')), 
     year           numeric(4,0) check (year > 1701 and year < 2100), 
     building       varchar(15),
     room_number        varchar(7),
     time_slot_id       varchar(4),
     primary key (course_id, sec_id, semester, year),
     foreign key (course_id) references course
        on delete cascade,
     foreign key (building, room_number) references classroom
        on delete set null
    )

内容的提问来源于stack exchange,提问作者nguu guiu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:12:18